Merge branch 'develop' into valere/rtc/voice_call

This commit is contained in:
Valere Fedronic 2026-03-09 17:18:55 +01:00 committed by GitHub
commit 95049849cc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
94 changed files with 1630 additions and 1219 deletions

View file

@ -13,6 +13,8 @@ updates:
open-pull-requests-limit: 0
reviewers:
- "element-hq/element-x-android-reviewers"
cooldown:
default-days: 7
# Updates for Gradle dependencies used in the app
- package-ecosystem: "gradle"
directory: "/"
@ -21,3 +23,5 @@ updates:
open-pull-requests-limit: 0
reviewers:
- "element-hq/element-x-android-reviewers"
cooldown:
default-days: 7

View file

@ -7,6 +7,8 @@ on:
push:
branches: [ develop ]
permissions: {}
# Enrich gradle.properties for CI/CD
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Dkotlin.daemon.jvm.options=-Xmx4g
@ -16,6 +18,9 @@ jobs:
build:
name: Build APKs
runs-on: ubuntu-latest
permissions:
# For NejcZdovc/comment-pr
pull-requests: write
strategy:
matrix:
variant: [debug, release, nightly]
@ -39,18 +44,19 @@ jobs:
docker-images: true
swap-storage: false
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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 }}
persist-credentials: false
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Assemble debug APKs
@ -68,7 +74,7 @@ jobs:
run: ./gradlew :app:assembleGplayDebug app:assembleFDroidDebug -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
- name: Upload debug APKs
if: ${{ matrix.variant == 'debug' }}
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: elementx-debug
path: |

View file

@ -7,6 +7,8 @@ on:
push:
branches: [ develop ]
permissions: {}
# Enrich gradle.properties for CI/CD
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Dkotlin.daemon.jvm.options=-Xmx4g
@ -41,11 +43,12 @@ jobs:
docker-images: true
swap-storage: false
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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 }}
persist-credentials: false
- name: Add SSH private keys for submodule repositories
uses: webfactory/ssh-agent@a6f90b1f127823b31d4d4a8d96047790581349bd # v0.9.1
with:
@ -53,12 +56,12 @@ jobs:
- name: Clone submodules
run: git submodule update --init --recursive
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Assemble debug Gplay Enterprise APK
@ -76,7 +79,7 @@ jobs:
run: ./gradlew :app:assembleGplayDebug -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
- name: Upload debug Enterprise APKs
if: ${{ matrix.variant == 'debug' }}
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: elementx-enterprise-debug
path: |

View file

@ -2,6 +2,8 @@ name: Danger CI
on: [pull_request, merge_group]
permissions: {}
jobs:
build:
runs-on: ubuntu-latest
@ -9,7 +11,9 @@ jobs:
# Skip in forks, it doesn't work even with the fallback token
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Add SSH private keys for submodule repositories
uses: webfactory/ssh-agent@a6f90b1f127823b31d4d4a8d96047790581349bd # v0.9.1
with:

View file

@ -2,11 +2,13 @@ name: Community PR notice
on:
workflow_dispatch:
pull_request_target:
pull_request_target: # zizmor: ignore[dangerous-triggers]
types:
- opened
- reopened
permissions: {}
jobs:
welcome:
runs-on: ubuntu-latest
@ -15,7 +17,7 @@ jobs:
if: github.event.pull_request.base.repo.full_name != github.event.pull_request.head.repo.full_name
steps:
- name: Add auto-generated commit warning
uses: actions/github-script@v8
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
github.rest.issues.createComment({

View file

@ -5,6 +5,8 @@ on:
# At 00:00 on every Tuesday UTC
- cron: '0 0 * * 2'
permissions: {}
jobs:
generate-github-pages:
runs-on: ubuntu-latest
@ -14,16 +16,16 @@ jobs:
- name: ⏬ Checkout with LFS
uses: nschloe/action-cached-lfs-checkout@f46300cd8952454b9f0a21a3d133d4bd5684cfc2 # v1.2.3
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Set up Python 3.12
uses: actions/setup-python@v6
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: 3.14
- name: Run World screenshots generation script

View file

@ -5,14 +5,18 @@ on:
schedule:
- cron: "0 0 * * *"
permissions: {}
jobs:
update-gradle-wrapper:
runs-on: ubuntu-latest
# Skip in forks
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
name: Use JDK 21
if: (github.event_name == 'pull_request' && github.event.pull_request.fork == null) || github.event_name == 'workflow_dispatch'
with:

View file

@ -5,6 +5,8 @@ on:
workflow_dispatch:
pull_request:
permissions: {}
# Enrich gradle.properties for CI/CD
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Dkotlin.daemon.jvm.options=-Xmx4g
@ -36,18 +38,19 @@ jobs:
docker-images: true
swap-storage: false
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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.ref }}
- uses: actions/setup-java@v5
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
name: Use JDK 21
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Assemble debug APK
@ -57,7 +60,7 @@ jobs:
ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID: ${{ secrets.MAPTILER_LIGHT_MAP_ID }}
ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }}
- name: Upload APK as artifact
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: elementx-apk-maestro
path: |
@ -75,14 +78,15 @@ jobs:
concurrency:
group: maestro-test
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: (github.event_name == 'pull_request' && github.event.pull_request.fork == null) || github.event_name == 'workflow_dispatch'
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.ref }}
persist-credentials: false
- name: Download APK artifact from previous job
uses: actions/download-artifact@v8
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
with:
name: elementx-apk-maestro
- name: Enable KVM group perms
@ -94,7 +98,7 @@ jobs:
run: curl -fsSL "https://get.maestro.mobile.dev" | bash
- name: Run Maestro tests in emulator
id: maestro_test
uses: reactivecircus/android-emulator-runner@v2
uses: reactivecircus/android-emulator-runner@b530d96654c385303d652368551fb075bc2f0b6b # v2.35.0
continue-on-error: true
env:
MAESTRO_USERNAME: maestroelement
@ -115,7 +119,7 @@ jobs:
script: |
.github/workflows/scripts/maestro/maestro-local-with-screen-recording.sh app-gplay-x86_64-debug.apk
- name: Upload test results
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: test-results
path: |

View file

@ -6,6 +6,8 @@ on:
# Every nights at 4
- cron: "0 4 * * *"
permissions: {}
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Dkotlin.daemon.jvm.options=-Xmx4g
CI_GRADLE_ARG_PROPERTIES: --stacktrace --no-daemon -Dsonar.gradle.skipCompile=true --no-configuration-cache
@ -30,9 +32,11 @@ jobs:
docker-images: true
swap-storage: false
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'

View file

@ -6,6 +6,8 @@ on:
# Every nights at 5
- cron: "0 5 * * *"
permissions: {}
# Enrich gradle.properties for CI/CD
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Dkotlin.daemon.jvm.options=-Xmx4g
@ -35,13 +37,13 @@ jobs:
uses: nschloe/action-cached-lfs-checkout@f46300cd8952454b9f0a21a3d133d4bd5684cfc2 # v1.2.3
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: false
@ -56,7 +58,7 @@ jobs:
- name: ✅ Upload kover report
if: always()
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: kover-results
path: |
@ -74,21 +76,23 @@ jobs:
name: Dependency analysis
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Dependency analysis
run: ./gradlew dependencyCheckAnalyze $CI_GRADLE_ARG_PROPERTIES
- name: Upload dependency analysis
if: always()
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: dependency-analysis
path: build/reports/dependency-check-report.html

View file

@ -5,6 +5,8 @@ on:
tags:
- 'v*'
permissions: {}
jobs:
post-release:
runs-on: ubuntu-latest
@ -13,7 +15,7 @@ jobs:
steps:
- name: Trigger pipeline
uses: actions/github-script@v8
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ secrets.ENTERPRISE_ACTIONS_TOKEN }}
script: |

View file

@ -2,11 +2,13 @@ name: Pull Request
on:
pull_request_target:
types: [ opened, edited, labeled, unlabeled, synchronize ]
workflow_call:
workflow_call: # zizmor: ignore[dangerous-triggers]
secrets:
ELEMENT_BOT_TOKEN:
required: true
permissions: {}
jobs:
prevent-blocked:
name: Prevent blocked
@ -15,7 +17,7 @@ jobs:
pull-requests: read
steps:
- name: Add notice
uses: actions/github-script@v8
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
if: contains(github.event.pull_request.labels.*.name, 'X-Blocked')
with:
script: |
@ -39,7 +41,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN_READ_ORG }}
- name: Add label
if: steps.teams.outputs.isTeamMember == 'false'
uses: actions/github-script@v8
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
github.rest.issues.addLabels({
@ -58,7 +60,7 @@ jobs:
github.event.pull_request.head.repo.full_name != github.repository
steps:
- name: Close pull request
uses: actions/github-script@v8
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
github.rest.issues.createComment({

View file

@ -7,6 +7,8 @@ on:
push:
branches: [ main, develop ]
permissions: {}
# Enrich gradle.properties for CI/CD
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Dkotlin.daemon.jvm.options=-Xmx4g
@ -31,7 +33,9 @@ jobs:
docker-images: true
swap-storage: false
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- 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' }}
@ -47,9 +51,11 @@ jobs:
name: Search for invalid screenshot files
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Set up Python 3.12
uses: actions/setup-python@v6
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: 3.14
- name: Search for invalid screenshot files
@ -59,18 +65,20 @@ jobs:
name: Search for invalid dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Set up Python 3.12
uses: actions/setup-python@v6
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: 3.14
- name: Search for invalid dependencies
@ -85,11 +93,12 @@ jobs:
group: ${{ github.ref == 'refs/heads/main' && format('check-konsist-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('check-konsist-develop-{0}', github.sha) || format('check-konsist-{0}', github.ref) }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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 }}
persist-credentials: false
- 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' }}
@ -99,19 +108,19 @@ jobs:
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
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Run Konsist tests
run: ./gradlew :tests:konsist:testDebugUnitTest $CI_GRADLE_ARG_PROPERTIES --no-daemon
- name: Upload reports
if: always()
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: konsist-report
path: |
@ -125,11 +134,12 @@ jobs:
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@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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 }}
persist-credentials: false
- 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' }}
@ -139,12 +149,12 @@ jobs:
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
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Run compose tests
@ -158,11 +168,12 @@ jobs:
group: ${{ github.ref == 'refs/heads/main' && format('check-lint-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('check-lint-develop-{0}', github.sha) || format('check-lint-{0}', github.ref) }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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 }}
persist-credentials: false
- 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' }}
@ -172,12 +183,12 @@ jobs:
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
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Build Gplay Debug
@ -188,7 +199,7 @@ jobs:
run: ./gradlew :app:lintGplayDebug :app:lintFdroidDebug lintDebug $CI_GRADLE_ARG_PROPERTIES --continue
- name: Upload reports
if: always()
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: linting-report
path: |
@ -202,11 +213,12 @@ jobs:
group: ${{ github.ref == 'refs/heads/main' && format('check-detekt-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('check-detekt-develop-{0}', github.sha) || format('check-detekt-{0}', github.ref) }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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 }}
persist-credentials: false
- 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' }}
@ -216,19 +228,19 @@ jobs:
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
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Run Detekt
run: ./gradlew detekt $CI_GRADLE_ARG_PROPERTIES --no-daemon
- name: Upload reports
if: always()
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: detekt-report
path: |
@ -242,11 +254,12 @@ jobs:
group: ${{ github.ref == 'refs/heads/main' && format('check-ktlint-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('check-ktlint-develop-{0}', github.sha) || format('check-ktlint-{0}', github.ref) }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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 }}
persist-credentials: false
- 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' }}
@ -256,19 +269,19 @@ jobs:
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
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Run Ktlint check
run: ./gradlew ktlintCheck $CI_GRADLE_ARG_PROPERTIES
- name: Upload reports
if: always()
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ktlint-report
path: |
@ -282,11 +295,12 @@ jobs:
group: ${{ github.ref == 'refs/heads/main' && format('check-knit-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('check-knit-develop-{0}', github.sha) || format('check-knit-{0}', github.ref) }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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 }}
persist-credentials: false
- 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' }}
@ -296,12 +310,12 @@ jobs:
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
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Run Knit
@ -313,25 +327,39 @@ jobs:
name: Check shell scripts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Run shellcheck
uses: ludeeus/action-shellcheck@2.0.0
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # v2.0.0
with:
severity: warning
zizmor:
name: Run zizmor
runs-on: ubuntu-latest
permissions:
security-events: write # Required for upload-sarif (used by zizmor-action) to upload SARIF files.
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: zizmorcore/zizmor-action@71321a20a9ded102f6e9ce5718a2fcec2c4f70d8 # v0.5.2
upload_reports:
name: Project Check Suite
runs-on: ubuntu-latest
needs: [konsist, lint, ktlint, detekt]
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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 }}
persist-credentials: false
- name: Download reports from previous jobs
uses: actions/download-artifact@v8
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
- name: Prepare Danger
if: always()
run: |

View file

@ -5,6 +5,8 @@ on:
pull_request:
types: [ labeled ]
permissions: {}
# Enrich gradle.properties for CI/CD
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Dkotlin.daemon.jvm.options=-Xmx4g -Dsonar.gradle.skipCompile=true
@ -48,13 +50,13 @@ jobs:
with:
persist-credentials: false
- name: ☕️ Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
# Add gradle cache, this should speed up the process
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Record screenshots

View file

@ -5,6 +5,8 @@ on:
push:
branches: [ main ]
permissions: {}
# Enrich gradle.properties for CI/CD
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Dkotlin.daemon.jvm.options=-Xmx4g
@ -32,14 +34,16 @@ jobs:
docker-images: true
swap-storage: false
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- name: Create app bundle
env:
ELEMENT_ANDROID_MAPTILER_API_KEY: ${{ secrets.MAPTILER_KEY }}
@ -53,7 +57,7 @@ jobs:
ELEMENT_CALL_RAGESHAKE_URL: ${{ secrets.ELEMENT_CALL_RAGESHAKE_URL }}
run: ./gradlew bundleGplayRelease $CI_GRADLE_ARG_PROPERTIES
- name: Upload bundle as artifact
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: elementx-app-gplay-bundle-unsigned
path: |
@ -67,7 +71,9 @@ jobs:
group: ${{ format('build-release-main-enterprise-{0}', github.sha) }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- 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' }}
@ -76,12 +82,12 @@ jobs:
- name: Clone submodules
run: git submodule update --init --recursive
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- name: Create Enterprise app bundle
env:
ELEMENT_ANDROID_MAPTILER_API_KEY: ${{ secrets.MAPTILER_KEY }}
@ -89,7 +95,7 @@ jobs:
ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }}
run: ./gradlew bundleGplayRelease $CI_GRADLE_ARG_PROPERTIES
- name: Upload bundle as artifact
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: elementx-enterprise-app-gplay-bundle-unsigned
path: |
@ -116,14 +122,16 @@ jobs:
docker-images: true
swap-storage: false
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- name: Create APKs
env:
ELEMENT_ANDROID_MAPTILER_API_KEY: ${{ secrets.MAPTILER_KEY }}
@ -131,7 +139,7 @@ jobs:
ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }}
run: ./gradlew assembleFdroidRelease $CI_GRADLE_ARG_PROPERTIES
- name: Upload apks as artifact
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: elementx-app-fdroid-apks-unsigned
path: |

View file

@ -7,6 +7,8 @@ on:
push:
branches: [ main, develop ]
permissions: {}
# Enrich gradle.properties for CI/CD
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Dkotlin.daemon.jvm.options=-Xmx4g
@ -36,18 +38,19 @@ jobs:
docker-images: true
swap-storage: false
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
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 }}
persist-credentials: false
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Build debug code and test fixtures

View file

@ -4,13 +4,15 @@ on:
schedule:
- cron: "30 1 * * *"
permissions: {}
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- uses: actions/stale@v10
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
with:
only-labels: "X-Needs-Info"
days-before-issue-stale: 30

View file

@ -5,24 +5,28 @@ on:
# At 00:00 on every Monday UTC
- cron: '0 0 * * 1'
permissions: {}
jobs:
sync-localazy:
runs-on: ubuntu-latest
# Skip in forks
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use JDK 21
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
- name: Set up Python 3.12
uses: actions/setup-python@v6
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: 3.14
- name: Setup Localazy

View file

@ -5,6 +5,8 @@ on:
# At 00:00 on every Monday UTC
- cron: '0 0 * * 1'
permissions: {}
jobs:
sync-sas-strings:
runs-on: ubuntu-latest
@ -12,9 +14,11 @@ jobs:
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }}
# No concurrency required, runs every time on a schedule.
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Set up Python 3.12
uses: actions/setup-python@v6
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: 3.14
- name: Install Prerequisite dependencies

View file

@ -7,6 +7,8 @@ on:
push:
branches: [ main, develop ]
permissions: {}
# Enrich gradle.properties for CI/CD
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx7g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError" -Dkotlin.daemon.jvm.options=-Xmx2g -XX:+UseG1GC
@ -61,12 +63,12 @@ jobs:
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
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
- name: Configure gradle
uses: gradle/actions/setup-gradle@v5
uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
with:
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
@ -75,7 +77,7 @@ jobs:
- name: 🚫 Upload kover failed coverage reports
if: failure()
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: kover-error-report
path: |
@ -87,7 +89,7 @@ jobs:
- name: 🚫 Upload test results on error
if: failure()
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: tests-and-screenshot-tests-results
path: |

View file

@ -4,11 +4,13 @@ on:
issues:
types: [ opened ]
permissions: {}
jobs:
triage-new-issues:
runs-on: ubuntu-latest
steps:
- uses: actions/add-to-project@v1.0.2
- uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2
with:
project-url: https://github.com/orgs/element-hq/projects/91
github-token: ${{ secrets.ELEMENT_BOT_TOKEN }}

View file

@ -4,6 +4,8 @@ on:
issues:
types: [labeled]
permissions: {}
jobs:
move_element_x_issues:
name: ElementX issues to ElementX project board
@ -12,7 +14,7 @@ jobs:
if: >
github.repository == 'element-hq/element-x-android'
steps:
- uses: actions/add-to-project@v1.0.2
- uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2
with:
project-url: https://github.com/orgs/element-hq/projects/43
github-token: ${{ secrets.ELEMENT_BOT_TOKEN }}
@ -21,14 +23,16 @@ jobs:
name: Move triaged needs info issues on board
runs-on: ubuntu-latest
steps:
- uses: actions/add-to-project@v1.0.2
- uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2
id: addItem
with:
project-url: https://github.com/orgs/element-hq/projects/91
github-token: ${{ secrets.ELEMENT_BOT_TOKEN }}
labeled: X-Needs-Info
- name: Print itemId
run: echo ${{ steps.addItem.outputs.itemId }}
run: echo ${STEPS_ADDITEM_OUTPUTS_ITEMID}
env:
STEPS_ADDITEM_OUTPUTS_ITEMID: ${{ steps.addItem.outputs.itemId }}
- uses: kalgurn/update-project-item-status@31e54df46a2cdaef4f85c31ac839fbcd2fd7c3a2 # 0.0.3
if: ${{ steps.addItem.outputs.itemId }}
with:
@ -43,7 +47,7 @@ jobs:
if: >
contains(github.event.issue.labels.*.name, 'Team: Element X Feature')
steps:
- uses: actions/add-to-project@v1.0.2
- uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2
with:
project-url: https://github.com/orgs/element-hq/projects/73
github-token: ${{ secrets.ELEMENT_BOT_TOKEN }}
@ -54,7 +58,7 @@ jobs:
if: >
contains(github.event.issue.labels.*.name, 'Team: Verticals Feature')
steps:
- uses: actions/add-to-project@v1.0.2
- uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2
with:
project-url: https://github.com/orgs/element-hq/projects/57
github-token: ${{ secrets.ELEMENT_BOT_TOKEN }}
@ -66,7 +70,7 @@ jobs:
contains(github.event.issue.labels.*.name, 'Team: QA') ||
contains(github.event.issue.labels.*.name, 'X-Needs-Signoff')
steps:
- uses: actions/add-to-project@v1.0.2
- uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2
with:
project-url: https://github.com/orgs/element-hq/projects/69
github-token: ${{ secrets.ELEMENT_BOT_TOKEN }}
@ -77,7 +81,7 @@ jobs:
if: >
contains(github.event.issue.labels.*.name, 'X-Needs-Signoff')
steps:
- uses: actions/add-to-project@v1.0.2
- uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2
with:
project-url: https://github.com/orgs/element-hq/projects/89
github-token: ${{ secrets.ELEMENT_BOT_TOKEN }}

View file

@ -2,6 +2,8 @@ name: Validate Git LFS
on: [pull_request, merge_group]
permissions: {}
jobs:
build:
runs-on: ubuntu-latest

View file

@ -1,3 +1,56 @@
Changes in Element X v26.03.2
=============================
## Hotfix release
This release is out of our normal release cycle because we detected an important issue that could happen when instantiating the cryptographic DB and would result in the room sync not working.
## What's Changed
### 🙌 Improvements
* Floating toolbar by @bmarty in https://github.com/element-hq/element-x-android/pull/6147
### 🐛 Bugfixes
* Ensure that redacted event from encrypted room does not trigger a fallback notification by @bmarty in https://github.com/element-hq/element-x-android/pull/6241
* Add `MediaSource.safeUrl` for removing invalid fragment part from URLs by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6035
### 🗣 Translations
* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/6269
### 🧱 Build
* Fix nightly CI issues by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6263
* CI: Add failed tests to summary by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6271
* Make 'room list catch-up' analytics transaction network aware by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6233
* Adjust the build-rust-sdk script to allow non-interactive use by @andybalaam in https://github.com/element-hq/element-x-android/pull/6281
### Dependency upgrades
* Update metro to v0.11.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6245
* Update dependency com.posthog:posthog-android to v3.34.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6251
* Update metro to v0.11.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6255
* Update coil to v3.4.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6243
* Update dependency io.element.android:element-call-embedded to v0.17.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6244
* Update dependency com.posthog:posthog-android to v3.34.2 - autoclosed by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6254
* Update dependencyAnalysis to v3.6.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6256
* Update GitHub Artifact Actions (major) by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6260
* Update dependency com.google.firebase:firebase-bom to v34.10.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6262
* Update dependency androidx.compose:compose-bom to v2026.02.01 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6267
* Update dependency com.posthog:posthog-android to v3.34.3 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6272
* Update metro to v0.11.2 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6270
* Update dependencyAnalysis to v3.6.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6259
* Sync compound tokens https://github.com/element-hq/compound-design-tokens/releases/tag/v6.10.1 by @bmarty in https://github.com/element-hq/element-x-android/pull/6273
* Update dependency io.sentry:sentry-android to v8.34.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6280
* Update dependency org.matrix.rustcomponents:sdk-android to v26.03.4 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6282
* Update dependency org.matrix.rustcomponents:sdk-android to v26.03.05 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6287
* Update plugin ktlint to v14.1.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6288
* Update dependency org.unifiedpush.android:connector to v3.3.2 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6285
### Others
* Add some DB optimizations by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6249
* Check if network access if blocked when fetching notifications by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6247
* Bottom bar iteration by @bmarty in https://github.com/element-hq/element-x-android/pull/6264
* Use `ShareIntentHandler` early to avoid distributing the whole intent by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6274
* Simplify push notification flow by using locally stored values for pending pushes by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6258
* Fix typed text becoming invisible when composing long messages by @timurgilfanov in https://github.com/element-hq/element-x-android/pull/6284
## New Contributors
* @timurgilfanov made their first contribution in https://github.com/element-hq/element-x-android/pull/6284
**Full Changelog**: https://github.com/element-hq/element-x-android/compare/v26.03.0...v26.03.2
Changes in Element X v26.03.0
=============================

View file

@ -26,7 +26,6 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.bumble.appyx.core.integration.NodeHost
import com.bumble.appyx.core.integrationpoint.NodeActivity
import com.bumble.appyx.core.plugin.NodeReadyObserver
import io.element.android.compound.colors.SemanticColorsLightDark
@ -35,6 +34,7 @@ import io.element.android.features.lockscreen.api.LockScreenEntryPoint
import io.element.android.features.lockscreen.api.LockScreenLockState
import io.element.android.features.lockscreen.api.LockScreenService
import io.element.android.features.lockscreen.api.handleSecureFlag
import io.element.android.libraries.architecture.appyx.DebugNavStateNodeHost
import io.element.android.libraries.architecture.bindings
import io.element.android.libraries.core.log.logger.LoggerTag
import io.element.android.libraries.designsystem.theme.ElementThemeApp
@ -100,7 +100,9 @@ class MainActivity : NodeActivity() {
@Composable
private fun MainNodeHost() {
NodeHost(integrationPoint = appyxV1IntegrationPoint) {
// TODO this is a temporary helper to capture the nav state in a more readable format for crash reports
// Revert to `NodeHost` once this is fixed
DebugNavStateNodeHost(integrationPoint = appyxV1IntegrationPoint) {
MainNode(
it,
plugins = listOf(
@ -110,7 +112,7 @@ class MainActivity : NodeActivity() {
mainNode = node
mainNode.handleIntent(intent)
}
}
},
),
context = applicationContext
)

View file

@ -0,0 +1,2 @@
Main changes in this version: fixed an issue that could cause a crash when instantiating the cryptographic database.
Full changelog: https://github.com/element-hq/element-x-android/releases

View file

@ -3,7 +3,7 @@
<string name="screen_create_room_action_create_room">"Naujas kambarys"</string>
<string name="screen_create_room_add_people_title">"Pakviesti žmonių"</string>
<string name="screen_create_room_error_creating_room">"Kuriant kambarį įvyko klaida"</string>
<string name="screen_create_room_private_option_description">"Į šį kambarį gali patekti tik pakviesti žmonės. Visi pranešimai yra užšifruoti nuo pradžios iki galo."</string>
<string name="screen_create_room_private_option_description">"Tik visapusiškai pakviestieji asmenys gali jungtis."</string>
<string name="screen_create_room_public_option_description">"Bet kas gali rasti šį kambarį.
Tai galite bet kada pakeisti kambario nustatymuose."</string>
<string name="screen_create_room_topic_label">"Tema (nebūtina)"</string>

View file

@ -15,6 +15,7 @@ Du kan endre dette når som helst i rominnstillingene."</string>
<string name="screen_create_room_public_option_title">"Offentlig"</string>
<string name="screen_create_room_room_access_section_knocking_option_description">"Alle kan be om å få bli med, men en administrator eller moderator må godta forespørselen."</string>
<string name="screen_create_room_room_access_section_knocking_option_title">"Be om å bli med"</string>
<string name="screen_create_room_room_access_section_knocking_restricted_option_description">"Alle i %1$s kan bli med, mens alle andre må be om tilgang."</string>
<string name="screen_create_room_room_access_section_knocking_restricted_option_title">"Be om å få bli med"</string>
<string name="screen_create_room_room_access_section_private_option_description">"Bare inviterte personer kan bli med."</string>
<string name="screen_create_room_room_access_section_private_option_title">"Privat"</string>
@ -27,6 +28,7 @@ Du kan endre dette når som helst i rominnstillingene."</string>
<string name="screen_create_room_room_address_section_title">"Adresse"</string>
<string name="screen_create_room_room_visibility_section_title">"Romsynlighet"</string>
<string name="screen_create_room_space_selection_no_space_description">"(ingen område)"</string>
<string name="screen_create_room_space_selection_no_space_option">"Skal ikke legges til et område"</string>
<string name="screen_create_room_space_selection_no_space_title">"Ingen områder valgt"</string>
<string name="screen_create_room_space_selection_sheet_title">"Legg til området"</string>
<string name="screen_create_room_topic_label">"Emne (valgfritt)"</string>

View file

@ -12,5 +12,5 @@
<string name="screen_identity_waiting_on_other_device">"Odotetaan toista laitetta…"</string>
<string name="screen_notification_optin_subtitle">"Voit muuttaa asetuksia myöhemmin."</string>
<string name="screen_notification_optin_title">"Salli ilmoitukset ja älä koskaan missaa viestejä"</string>
<string name="screen_session_verification_enter_recovery_key">"Syötä palautusavain"</string>
<string name="screen_session_verification_enter_recovery_key">"Anna palautusavain"</string>
</resources>

View file

@ -9,7 +9,7 @@
<string name="banner_set_up_recovery_submit">"Ota palautus käyttöön"</string>
<string name="banner_set_up_recovery_title">"Ota palautus käyttöön tilisi suojaamiseksi"</string>
<string name="confirm_recovery_key_banner_message">"Vahvista palautusavaimesi, jotta pääset edelleen käyttämään avainten säilytystä ja viestihistoriaa."</string>
<string name="confirm_recovery_key_banner_primary_button_title">"Syötä palautusavaimesi"</string>
<string name="confirm_recovery_key_banner_primary_button_title">"Anna palautusavaimesi"</string>
<string name="confirm_recovery_key_banner_secondary_button_title">"Unohditko palautusavaimesi?"</string>
<string name="confirm_recovery_key_banner_title">"Avainten säilytys ei ole synkronoitu"</string>
<string name="full_screen_intent_banner_message">"Salli koko näytön ilmoitukset, kun laite on lukittu, jos et halua koskaan missata tärkeää puhelua."</string>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_join_room_ban_by_message">"Du bannades av %1$s."</string>
<string name="screen_join_room_ban_message">"Du bannades från det här rummet"</string>
<string name="screen_join_room_ban_message">"Du bannades"</string>
<string name="screen_join_room_ban_reason">"Anledning: %1$s."</string>
<string name="screen_join_room_cancel_knock_action">"Avbryt begäran"</string>
<string name="screen_join_room_cancel_knock_alert_confirmation">"Ja, avbryt"</string>
@ -12,7 +12,7 @@
<string name="screen_join_room_decline_and_block_alert_title">"Avvisa inbjudan och blockera"</string>
<string name="screen_join_room_decline_and_block_button_title">"Avvisa och blockera"</string>
<string name="screen_join_room_fail_message">"Misslyckades att gå med."</string>
<string name="screen_join_room_fail_reason">"Detta rum är antingen endast för inbjudna eller så kan det finnas begränsningar för åtkomst på utrymmesnivå."</string>
<string name="screen_join_room_fail_reason">"Du måste antingen bli inbjuden att gå med eller så kan det finnas åtkomstbegränsningar."</string>
<string name="screen_join_room_forget_action">"Glöm"</string>
<string name="screen_join_room_invite_required_message">"Du behöver en inbjudan för att gå med"</string>
<string name="screen_join_room_join_action">"Gå med"</string>

View file

@ -6,7 +6,7 @@
<string name="screen_link_new_device_desktop_submit">"Valmis skannaamaan"</string>
<string name="screen_link_new_device_desktop_title">"Avaa %1$s pöytätietokoneella saadaksesi QR-koodin"</string>
<string name="screen_link_new_device_enter_number_error_numbers_do_not_match">"Numerot eivät täsmää"</string>
<string name="screen_link_new_device_enter_number_notice">"Syötä 2-numeroinen koodi"</string>
<string name="screen_link_new_device_enter_number_notice">"Kirjoita 2-numeroinen koodi"</string>
<string name="screen_link_new_device_enter_number_subtitle">"Tämä varmistaa, että yhteys toiseen laitteeseesi on turvallinen."</string>
<string name="screen_link_new_device_enter_number_title">"Kirjoita toisessa laitteessa näkyvä numero"</string>
<string name="screen_link_new_device_error_app_not_supported_subtitle">"Palveluntarjoajasi ei tue %1$s -sovellusta"</string>

View file

@ -4,7 +4,7 @@
<string name="screen_link_new_device_desktop_step1">"%1$s uygulamasını bir dizüstü veya masaüstü bilgisayarda açın"</string>
<string name="screen_link_new_device_desktop_step3">"QR kodunu bu cihazla tarayın"</string>
<string name="screen_link_new_device_desktop_submit">"Taramaya hazır"</string>
<string name="screen_link_new_device_desktop_title">"QR kodu almak için %1$s uygulamasını masaüstü bilgisayarda açın%1$s%1$s"</string>
<string name="screen_link_new_device_desktop_title">"QR kodu almak için %1$s uygulamasını masaüstü bilgisayarda açın"</string>
<string name="screen_link_new_device_enter_number_error_numbers_do_not_match">"Sayılar uyuşmuyor"</string>
<string name="screen_link_new_device_enter_number_notice">"2 haneli kodu girin"</string>
<string name="screen_link_new_device_enter_number_subtitle">"Bu işlem, diğer cihazla olan bağlantının güvenli olduğunu doğrular."</string>

View file

@ -33,7 +33,7 @@
<string name="screen_login_error_invalid_user_id">"Tämä ei ole kelvollinen käyttäjätunnus. Odotettu muoto: \'@käyttäjä:kotipalvelin.fi\'"</string>
<string name="screen_login_error_refresh_tokens">"Tämä palvelin on määritetty käyttämään refresh tokeneja. Näitä ei tueta salasanapohjaisen kirjautumisen kanssa."</string>
<string name="screen_login_error_unsupported_authentication">"Valitsemasi kotipalvelin ei tue salasana- tai OIDC-kirjautumista. Ota yhteyttä palvelimesi ylläpitäjään tai valitse toinen kotipalvelin."</string>
<string name="screen_login_form_header">"Syötä tietosi"</string>
<string name="screen_login_form_header">"Anna tietosi"</string>
<string name="screen_login_subtitle">"Matrix on avoin verkko turvallista, hajautettua viestintää varten."</string>
<string name="screen_login_title">"Tervetuloa takaisin!"</string>
<string name="screen_login_title_with_homeserver">"Kirjaudu sisään %1$s -palvelimelle"</string>

View file

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_account_provider_change">"Keisti paskyros teikėją"</string>
<string name="screen_account_provider_form_hint">"Pagrindinio serverio adresas"</string>
<string name="screen_account_provider_form_notice">"Įveskite paieškos terminą arba domeno adresą."</string>
<string name="screen_account_provider_form_subtitle">"Ieškokite bendrovės, bendruomenės arba privataus serverio."</string>
<string name="screen_account_provider_form_title">"Rasti paskyros teikėją"</string>
<string name="screen_account_provider_signin_subtitle">"Čia bus saugomi Jūsų pokalbiai - panašiai kaip el. pašto paslaugų teikėjas saugo Jūsų el. laiškus."</string>

View file

@ -19,8 +19,13 @@
<string name="screen_room_attachment_source_camera_video">"Įrašyti vaizdo įrašą"</string>
<string name="screen_room_attachment_source_files">"Priedas"</string>
<string name="screen_room_attachment_source_gallery">"Nuotraukų ir vaizdo įrašų biblioteka"</string>
<string name="screen_room_invite_again_alert_message">"Ar norėtumėte juos pakviesti atgal?"</string>
<string name="screen_room_invite_again_alert_title">"Šiame pokalbyje esate vieni."</string>
<string name="screen_room_retry_send_menu_send_again_action">"Siųsti vėl"</string>
<string name="screen_room_retry_send_menu_title">"Jūsų žinutė nepavyko išsiųsti."</string>
<string name="screen_room_timeline_beginning_of_room">"Tai yra %1$s pradžia."</string>
<string name="screen_room_timeline_beginning_of_room_no_name">"Tai yra šio pokalbio pradžia."</string>
<string name="screen_room_timeline_no_permission_to_post">"Neturite leidimą skelbti šiame kambaryje."</string>
<string name="screen_room_timeline_read_marker_title">"Naujų"</string>
<plurals name="screen_room_timeline_state_changes">
<item quantity="one">"%1$d kambario pakeitimas"</item>

View file

@ -9,6 +9,8 @@
package io.element.android.features.rageshake.impl.crash
import android.os.Build
import android.os.TransactionTooLargeException
import io.element.android.libraries.architecture.appyx.lastCapturedNavState
import io.element.android.libraries.core.data.tryOrNull
import timber.log.Timber
import java.io.PrintWriter
@ -61,6 +63,13 @@ class VectorUncaughtExceptionHandler(
val sw = StringWriter()
val pw = PrintWriter(sw, true)
throwable.printStackTrace(pw)
if (throwable is RuntimeException && throwable.cause is TransactionTooLargeException) {
pw.append('\n')
pw.append(lastCapturedNavState)
Timber.v(lastCapturedNavState)
}
append(sw.buffer.toString())
}
Timber.e("FATAL EXCEPTION $bugDescription")

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_room_change_permissions_room_details">"Redaguoti kambarį"</string>
<string name="screen_room_change_permissions_room_details">"Redaguoti informaciją"</string>
<plurals name="screen_room_member_list_header_title">
<item quantity="one">"%1$d asmuo"</item>
<item quantity="few">"%1$d asmenys"</item>

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_room_change_permissions_room_details">"Redaguoti kambarį"</string>
<string name="screen_room_change_permissions_room_details">"Redaguoti informaciją"</string>
<string name="screen_room_details_add_topic_title">"Pridėti temą"</string>
<string name="screen_room_details_edit_room_title">"Redaguoti kambarį"</string>
<string name="screen_room_details_edit_room_title">"Redaguoti informaciją"</string>
<string name="screen_room_details_edition_error">"Įvyko nežinoma klaida ir informacijos pakeisti nepavyko."</string>
<string name="screen_room_details_edition_error_title">"Nepavyko atnaujinti kambario"</string>
<string name="screen_room_details_encryption_enabled_subtitle">"Žinutės yra užrakintos. Tik Jūs ir gavėjai turite unikalius raktus joms atrakinti."</string>

View file

@ -50,6 +50,8 @@
<string name="screen_room_details_error_loading_notification_settings">"Ett fel uppstod vid laddning av aviseringsinställningar."</string>
<string name="screen_room_details_error_muting">"Misslyckades att tysta det här rummet, vänligen pröva igen."</string>
<string name="screen_room_details_error_unmuting">"Misslyckades att avtysta det här rummet, vänligen pröva igen."</string>
<string name="screen_room_details_invite_people_dont_close">"Stäng inte appen förrän det är klart."</string>
<string name="screen_room_details_invite_people_preparing">"Förbereder inbjudningar …"</string>
<string name="screen_room_details_invite_people_title">"Bjud in personer"</string>
<string name="screen_room_details_leave_conversation_title">"Lämna konversation"</string>
<string name="screen_room_details_leave_room_title">"Lämna rum"</string>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_room_details_edit_room_title">"Redaguoti kambarį"</string>
<string name="screen_room_details_edit_room_title">"Redaguoti informaciją"</string>
<string name="screen_room_details_edition_error">"Įvyko nežinoma klaida ir informacijos pakeisti nepavyko."</string>
<string name="screen_room_details_edition_error_title">"Nepavyko atnaujinti kambario"</string>
<string name="screen_room_details_updating_room">"Atnaujinamas kambarys…"</string>

View file

@ -9,7 +9,7 @@
<string name="screen_chat_backup_key_storage_toggle_title">"Salli avainten säilytys"</string>
<string name="screen_chat_backup_recovery_action_change">"Vaihda palautusavain"</string>
<string name="screen_chat_backup_recovery_action_change_description">"Palauta kryptografinen identiteettisi ja viestihistoriasi palautusavaimella, jos olet menettänyt kaikki nykyiset laitteesi."</string>
<string name="screen_chat_backup_recovery_action_confirm">"Syötä palautusavain"</string>
<string name="screen_chat_backup_recovery_action_confirm">"Anna palautusavain"</string>
<string name="screen_chat_backup_recovery_action_confirm_description">"Avainten säilytys ei ole tällä hetkellä synkronoitu."</string>
<string name="screen_chat_backup_recovery_action_setup">"Ota palautus käyttöön"</string>
<string name="screen_chat_backup_recovery_action_setup_description">"Pääset käsiksi salattuihin viesteihisi, jos menetät kaikki laitteesi tai olet kirjautunut ulos %1$s -sovelluksesta kaikkialla."</string>
@ -43,10 +43,10 @@
<string name="screen_recovery_key_confirm_error_content">"Yritä uudelleen vahvistaaksesi pääsyn avainten säilytykseen."</string>
<string name="screen_recovery_key_confirm_error_title">"Väärä palautusavain"</string>
<string name="screen_recovery_key_confirm_key_description">"Jos sinulla on turva-avain tai turvalause, sekin toimii."</string>
<string name="screen_recovery_key_confirm_key_placeholder">"Syötä…"</string>
<string name="screen_recovery_key_confirm_key_placeholder">"Kirjoita…"</string>
<string name="screen_recovery_key_confirm_lost_recovery_key">"Hukkasitko palautusavaimesi?"</string>
<string name="screen_recovery_key_confirm_success">"Palautusavain vahvistettu"</string>
<string name="screen_recovery_key_confirm_title">"Syötä palautusavaimesi"</string>
<string name="screen_recovery_key_confirm_title">"Anna palautusavaimesi"</string>
<string name="screen_recovery_key_copied_to_clipboard">"Palautusavain kopioitu"</string>
<string name="screen_recovery_key_generating_key">"Luodaan…"</string>
<string name="screen_recovery_key_save_action">"Tallenna palautusavain"</string>
@ -64,7 +64,7 @@
<string name="screen_reset_encryption_confirmation_alert_subtitle">"Tätä prosessia ei voi peruuttaa."</string>
<string name="screen_reset_encryption_confirmation_alert_title">"Haluatko varmasti nollata identiteettisi?"</string>
<string name="screen_reset_encryption_password_error">"Tapahtui tuntematon virhe. Tarkista, että tilisi salasana on oikein ja yritä uudelleen."</string>
<string name="screen_reset_encryption_password_placeholder">"Syötä…"</string>
<string name="screen_reset_encryption_password_placeholder">"Kirjoita…"</string>
<string name="screen_reset_encryption_password_subtitle">"Vahvista, että haluat nollata identiteettisi."</string>
<string name="screen_reset_encryption_password_title">"Kirjoita tilisi salasana jatkaaksesi"</string>
</resources>

View file

@ -8,13 +8,16 @@
</plurals>
<string name="screen_leave_space_subtitle">"Velg rommene du vil forlate, som du ikke er den eneste administratoren for:"</string>
<string name="screen_leave_space_subtitle_last_admin">"Du må tildele en annen administrator for dette området før du kan forlate det."</string>
<string name="screen_leave_space_subtitle_last_owner">"Du er den eneste eieren av%1$s. Du må overføre eierskapet til noen andre før du drar."</string>
<string name="screen_leave_space_subtitle_only_last_admin">"Du vil ikke bli fjernet fra følgende rom fordi du er den eneste administratoren:"</string>
<string name="screen_leave_space_title">"Forlat %1$s?"</string>
<string name="screen_leave_space_title_last_admin">"Du er den eneste administratoren for %1$s"</string>
<string name="screen_leave_space_title_last_owner">"Overfør eierskap"</string>
<string name="screen_space_add_room_action">"Rom"</string>
<string name="screen_space_add_rooms_room_access_description">"Hvis du legger til et rom, vil det ikke påvirke tilgangen til rommet. For å endre tilgangen, gå til Rominnstillinger &gt; Sikkerhet og personvern."</string>
<string name="screen_space_empty_state_title">"Legg til ditt første rom"</string>
<string name="screen_space_menu_action_members">"Vis medlemmer"</string>
<string name="screen_space_remove_rooms_confirmation_content">"Fjerning av et rom vil ikke påvirke tilgangen til rommet. For å endre tilgangen, gå til Rominformasjon &gt; Personvern og sikkerhet."</string>
<plurals name="screen_space_remove_rooms_confirmation_title">
<item quantity="one">"Fjern %1$d rom fra %2$s"</item>
<item quantity="other">"Fjern %1$d rommene fra %2$s"</item>

View file

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_leave_space_choose_owners_action">"Välj ägare"</string>
<string name="screen_leave_space_title">"Lämna %1$s?"</string>
<string name="screen_space_settings_leave_space">"Lämna utrymmet"</string>
<string name="screen_space_settings_roles_and_permissions">"Roller och behörigheter"</string>
<string name="screen_space_settings_security_and_privacy">"Säkerhet och sekretess"</string>
</resources>

View file

@ -5,7 +5,7 @@
<string name="screen_start_chat_error_starting_chat">"Keskustelun aloituksessa tapahtui virhe"</string>
<string name="screen_start_chat_join_room_by_address_action">"Liity huoneeseen osoitteella"</string>
<string name="screen_start_chat_join_room_by_address_invalid_address">"Osoite ei ole kelvollinen"</string>
<string name="screen_start_chat_join_room_by_address_placeholder">"Syötä…"</string>
<string name="screen_start_chat_join_room_by_address_placeholder">"Kirjoita…"</string>
<string name="screen_start_chat_join_room_by_address_room_found">"Täsmäävä huone löytyi"</string>
<string name="screen_start_chat_join_room_by_address_room_not_found">"Huonetta ei löytynyt"</string>
<string name="screen_start_chat_join_room_by_address_supporting_text">"esim. #huoneen-nimi:matrix.org"</string>

View file

@ -19,7 +19,7 @@
<string name="screen_session_verification_complete_subtitle">"Nyt voit lukea tai lähettää viestejä turvallisesti toisella laitteellasi."</string>
<string name="screen_session_verification_complete_user_subtitle">"Nyt voit luottaa tämän käyttäjän identiteettiin, kun lähetät tai vastaanotat viestejä."</string>
<string name="screen_session_verification_device_verified">"Laite vahvistettu"</string>
<string name="screen_session_verification_enter_recovery_key">"Syötä palautusavain"</string>
<string name="screen_session_verification_enter_recovery_key">"Anna palautusavain"</string>
<string name="screen_session_verification_failed_subtitle">"Joko pyyntö aikakatkaistiin, pyyntö hylättiin tai vahvistus ei täsmännyt."</string>
<string name="screen_session_verification_open_existing_session_subtitle">"Vahvista, että se olet sinä, jotta näet aiemmat salatut viestisi."</string>
<string name="screen_session_verification_open_existing_session_title">"Avaa laite, jossa olet jo kirjautuneena"</string>

View file

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_session_verification_cancelled_subtitle">"Kažkas atrodo ne taip. Baigėsi užklausos skirtasis laikas arba užklausa buvo atmesta."</string>
<string name="screen_session_verification_compare_emojis_subtitle">"Patvirtinkite, kad žemiau esantys jaustukai atitinka tuos, kurie rodomi kitoje sesijoje."</string>
<string name="screen_session_verification_compare_emojis_subtitle">"Patvirtinkite, kad žemiau esantys jaustukai atitinka tuos, kurie rodomi kitame jūsų įrenginyje."</string>
<string name="screen_session_verification_compare_emojis_title">"Palyginkite jaustukus"</string>
<string name="screen_session_verification_complete_subtitle">"Jūsų nauja sesija dabar patvirtinta. Ji turi prieigą prie jūsų užšifruotų pranešimų, o kiti vartotojai matys ją kaip patikimą."</string>
<string name="screen_session_verification_complete_subtitle">"Dabar galite saugiai skaityti arba siųsti žinutes kitame savo įrenginyje."</string>
<string name="screen_session_verification_open_existing_session_subtitle">"Įrodykite, kad tai Jūs, norėdami pasiekti savo užšifruotų pranešimų istoriją."</string>
<string name="screen_session_verification_open_existing_session_title">"Atidaryti esamą sesiją"</string>
<string name="screen_session_verification_positive_button_canceled">"Pakartoti patvirtinimą"</string>
<string name="screen_session_verification_positive_button_initial">"Aš pasiruošęs"</string>
<string name="screen_session_verification_positive_button_verifying_ongoing">"Laukiama atitikimo…"</string>
<string name="screen_session_verification_request_accepted_subtitle">"Palyginkite unikalius jaustukus, įsitikindami, kad jie rodomi ta pačia tvarka."</string>
<string name="screen_session_verification_request_success_subtitle">"Jūsų nauja sesija dabar patvirtinta. Ji turi prieigą prie jūsų užšifruotų pranešimų, o kiti vartotojai matys ją kaip patikimą."</string>
<string name="screen_session_verification_request_success_subtitle">"Dabar galite saugiai skaityti arba siųsti žinutes kitame savo įrenginyje."</string>
<string name="screen_session_verification_they_dont_match">"Jie nesutampa"</string>
<string name="screen_session_verification_they_match">"Jie sutampa"</string>
<string name="screen_session_verification_waiting_to_accept_subtitle">"Kitoje sesijoje priimkite prašymą pradėti tikrinimo procesą, kad galėtumėte tęsti."</string>

View file

@ -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.05"
matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.03.6"
# Others
coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" }
@ -219,8 +219,8 @@ haze_materials = { module = "dev.chrisbanes.haze:haze-materials", version.ref =
color_picker = "io.mhssn:colorpicker:1.0.0"
# Analytics
posthog = "com.posthog:posthog-android:3.34.3"
sentry = "io.sentry:sentry-android:8.34.0"
posthog = "com.posthog:posthog-android:3.35.0"
sentry = "io.sentry:sentry-android:8.34.1"
# main branch can be tested replacing the version with main-SNAPSHOT
matrix_analytics_events = "com.github.matrix-org:matrix-analytics-events:0.29.2"
@ -267,7 +267,7 @@ roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" }
sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" }
firebaseAppDistribution = { id = "com.google.firebase.appdistribution", version.ref = "firebaseAppDistribution" }
knit = { id = "org.jetbrains.kotlinx.knit", version = "0.5.1" }
sonarqube = "org.sonarqube:7.2.2.6593"
sonarqube = "org.sonarqube:7.2.3.7755"
licensee = "app.cash.licensee:1.14.1"
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
gms_google_services = { id = "com.google.gms.google-services", version = "4.4.4" }

View file

@ -0,0 +1,154 @@
package io.element.android.libraries.architecture.appyx
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.State
import androidx.compose.runtime.currentCompositeKeyHashCode
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.mapSaver
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Modifier
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.compose.LocalLifecycleOwner
import com.bumble.appyx.core.integration.NodeFactory
import com.bumble.appyx.core.integrationpoint.IntegrationPoint
import com.bumble.appyx.core.modality.BuildContext
import com.bumble.appyx.core.navigation.NavElement
import com.bumble.appyx.core.navigation.NavKey
import com.bumble.appyx.core.node.Node
import com.bumble.appyx.core.node.build
import com.bumble.appyx.core.state.SavedStateMap
import com.bumble.appyx.utils.customisations.NodeCustomisationDirectory
import com.bumble.appyx.utils.customisations.NodeCustomisationDirectoryImpl
import timber.log.Timber
/*
* Copyright (c) 2026 Element Creations Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
* Please see LICENSE files in the repository root for full details.
*/
/**
* Contains the last captured navigation state in a human-readable format, which can be attached to crash reports to help
* with debugging `TransactionTooLargeException` crashes.
*/
var lastCapturedNavState: String = "No nav state captured yet"
private data class NodeEntry(
val navKey: Any?,
val children: List<NodeEntry> = emptyList()
) {
override fun toString(): String {
val key = navKey ?: return ""
return buildString {
append(key.javaClass.name)
if (children.isNotEmpty()) {
append("=[")
append(children.joinToString(", "))
append("]")
}
}
}
}
@Suppress("UNCHECKED_CAST")
private fun Map<String, Any?>.buildNavStateMap(): List<NodeEntry> {
val children = this["ChildrenState"] as? Map<NavKey<*>, Map<String, Any?>> ?: return emptyList()
return children.entries.map { (key, value) ->
NodeEntry(
navKey = key.navTarget,
children = value.buildNavStateMap()
)
}
}
@Suppress("UNCHECKED_CAST")
private fun Map<String, Any?>.buildNavModel(name: String): List<NodeEntry> {
val navModel = this[name] as? List<NavElement<*, *>> ?: return emptyList()
return navModel.map {
NodeEntry(
navKey = it.key.navTarget,
children = emptyList()
)
}
}
// Once we have fixed the `TransactionTooLargeException` issues, we should remove this and use the default `NodeHost` implementation
@Suppress("ComposableParamOrder") // detekt complains as 'factory' param isn't a pure lambda
@Composable
fun <N : Node> DebugNavStateNodeHost(
integrationPoint: IntegrationPoint,
modifier: Modifier = Modifier,
customisations: NodeCustomisationDirectory = remember { NodeCustomisationDirectoryImpl() },
factory: NodeFactory<N>
) {
val node by rememberNode(factory, "AppyxMainNode", customisations, integrationPoint)
DisposableEffect(node) {
onDispose { node.updateLifecycleState(Lifecycle.State.DESTROYED) }
}
node.Compose(modifier = modifier)
val lifecycle = LocalLifecycleOwner.current.lifecycle
DisposableEffect(lifecycle) {
node.updateLifecycleState(lifecycle.currentState)
val observer = LifecycleEventObserver { source, _ ->
node.updateLifecycleState(source.lifecycle.currentState)
}
lifecycle.addObserver(observer)
onDispose { lifecycle.removeObserver(observer) }
}
}
@Composable
private fun <N : Node> rememberNode(
factory: NodeFactory<N>,
key: String,
customisations: NodeCustomisationDirectory,
integrationPoint: IntegrationPoint,
): State<N> {
fun createNode(savedStateMap: SavedStateMap?): N =
factory
.create(
buildContext = BuildContext.root(
savedStateMap = savedStateMap,
customisations = customisations
),
)
.apply { this.integrationPoint = integrationPoint }
.build()
// This is deprecated because using the custom key would not make this unique, but we work around that by using the currentCompositeKeyHashCode
// as part of the key, which should be unique for each call site of rememberNode.
@Suppress("DEPRECATION")
return rememberSaveable(
inputs = arrayOf(),
key = "$key:$currentCompositeKeyHashCode",
stateSaver = mapSaver(
save = { node ->
val result = node.saveInstanceState(this)
// We want to capture the nav state in a format that's easier to read and understand in crash reports, so we build a custom map for that.
val copy = result.toMutableMap()
copy["ChildrenState"] = copy.buildNavStateMap()
val navModelKey = "NavModel"
if (copy.contains(navModelKey)) {
copy[navModelKey] = copy.buildNavModel(navModelKey)
}
val permanentNavModelKey = "com.bumble.appyx.core.navigation.model.permanent.PermanentNavModel"
if (copy.contains(permanentNavModelKey)) {
copy[permanentNavModelKey] =
copy.buildNavModel(permanentNavModelKey)
}
Timber.d("Saving nav state: $copy")
// Store the last nav state in a global variable so that it can be attached to crash reports if the app crashes before the next save happens.
lastCapturedNavState = copy.toString()
result
},
restore = { state -> createNode(savedStateMap = state) },
),
) {
mutableStateOf(createNode(savedStateMap = null))
}
}

View file

@ -229,8 +229,11 @@ class JoinedRustRoom(
is CreateTimelineParams.Threaded -> DateDividerMode.DAILY
}
// Track read receipts only for focused timeline for performance optimization
val trackReadReceipts = createTimelineParams is CreateTimelineParams.Focused
// Track read receipts only for focused and threaded timelines for performance optimization
val trackReadReceipts = when (createTimelineParams) {
is CreateTimelineParams.Focused, is CreateTimelineParams.Threaded -> true
is CreateTimelineParams.MediaOnly, is CreateTimelineParams.MediaOnlyFocused, CreateTimelineParams.PinnedOnly -> false
}
runCatchingExceptions {
innerRoom.timelineWithConfiguration(

View file

@ -134,6 +134,9 @@ class TimelineEventContentMapper(
}
is TimelineItemContent.CallInvite -> LegacyCallInviteContent
is TimelineItemContent.RtcNotification -> CallNotifyContent
is TimelineItemContent.LiveLocation -> {
UnknownContent
}
}
}
}

View file

@ -17,6 +17,11 @@
</plurals>
<string name="notification_error_unified_push_unregistered_android">"Distributor oznámení UnifiedPush se nepodařilo zaregistrovat, takže již nebudete dostávat oznámení. Zkontrolujte nastavení oznámení v aplikaci a stav distributora push oznámění."</string>
<string name="notification_fallback_content">"Oznámení"</string>
<plurals name="notification_fallback_n_content">
<item quantity="one">"Máte %d novou zprávu."</item>
<item quantity="few">"Máte %d nové zprávy."</item>
<item quantity="other">"Máte %d nových zpráv."</item>
</plurals>
<string name="notification_incoming_call">"📹 Příchozí hovor"</string>
<string name="notification_inline_reply_failed">"** Nepodařilo se odeslat - otevřete prosím místnost"</string>
<string name="notification_invitation_action_join">"Vstoupit"</string>

View file

@ -19,6 +19,7 @@
<item quantity="one">"Sinulla on %d uusi viesti."</item>
<item quantity="other">"Sinulla on %d uutta viestiä."</item>
</plurals>
<string name="notification_incoming_audio_call">"📞 Saapuva puhelu"</string>
<string name="notification_incoming_call">"📹 Saapuva puhelu"</string>
<string name="notification_inline_reply_failed">"** Lähetys epäonnistui - avaa huone"</string>
<string name="notification_invitation_action_join">"Liity"</string>

View file

@ -19,6 +19,7 @@
<item quantity="one">"Vous avez %d nouveau message."</item>
<item quantity="other">"Vous avez %d nouveaux messages."</item>
</plurals>
<string name="notification_incoming_audio_call">"📞 Appel entrant"</string>
<string name="notification_incoming_call">"📹 Appel entrant"</string>
<string name="notification_inline_reply_failed">"** Échec de lenvoi - veuillez ouvrir le salon"</string>
<string name="notification_invitation_action_join">"Rejoindre"</string>

View file

@ -28,6 +28,7 @@
<item quantity="other">"%d naujų žinučių"</item>
</plurals>
<string name="notification_room_action_quick_reply">"Sparčiai atsakyti"</string>
<string name="notification_room_invite_body">"Pakvietė jus jungtis prie kambario"</string>
<string name="notification_sender_me">"Aš"</string>
<string name="notification_test_push_notification_content">"Jūs žiūrite pranešimą! Spustelėkite mane!"</string>
<string name="notification_ticker_text_dm">"%1$s: %2$s"</string>

View file

@ -19,6 +19,7 @@
<item quantity="one">"Du har %d ny melding."</item>
<item quantity="other">"Du har %d nye meldinger."</item>
</plurals>
<string name="notification_incoming_audio_call">"📞 Innkommende anrop"</string>
<string name="notification_incoming_call">"📹 Innkommende anrop"</string>
<string name="notification_inline_reply_failed">"** Kunne ikke sende - vennligst åpne rommet"</string>
<string name="notification_invitation_action_join">"Bli med"</string>

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="a11y_add_reaction">"Přidat reakci: %1$s"</string>
<string name="a11y_address">"Adresa"</string>
<string name="a11y_avatar">"Profilový obrázek"</string>
<string name="a11y_collapse_message_text_field">"Minimalizovat textové pole zprávy"</string>
<string name="a11y_delete">"Smazat"</string>
@ -28,8 +29,10 @@
<string name="a11y_paused_voice_message">"Hlasová zpráva, délka: %1$s, aktuální pozice: %2$s"</string>
<string name="a11y_pin_field">"Pole pro PIN"</string>
<string name="a11y_play">"Přehrát"</string>
<string name="a11y_playback_speed">"Rychlost přehrávání"</string>
<string name="a11y_poll">"Hlasování"</string>
<string name="a11y_poll_end">"Hlasování ukončeno"</string>
<string name="a11y_qr_code">"QR kód"</string>
<string name="a11y_react_with">"Reagovat s %1$s"</string>
<string name="a11y_react_with_other_emojis">"Reagovat s dalšími emoji"</string>
<string name="a11y_read_receipts_multiple">"%1$s a %2$s přečetli"</string>
@ -155,6 +158,7 @@
<string name="action_send_voice_message">"Odeslat hlasovou zprávu"</string>
<string name="action_share">"Sdílet"</string>
<string name="action_share_link">"Sdílet odkaz"</string>
<string name="action_share_live_location">"Sdílet aktuální polohu"</string>
<string name="action_show">"Zobrazit"</string>
<string name="action_sign_in_again">"Přihlásit se znovu"</string>
<string name="action_signout">"Odhlásit se"</string>
@ -407,6 +411,7 @@ Důvod: %1$s."</string>
<string name="crypto_identity_change_profile_pin_violation">"Identita uživatele %1$s se změnila."</string>
<string name="crypto_identity_change_verification_violation_new">"Identita uživatele %1$s %2$s se změnila. %3$s"</string>
<string name="crypto_identity_change_withdraw_verification_action">"Zrušit ověření"</string>
<string name="dialog_allow_access">"Povolit přístup"</string>
<string name="dialog_confirm_link_message">"Odkaz %1$s vás přesměruje na jinou stránku %2$s
Opravdu chcete pokračovat?"</string>

View file

@ -95,7 +95,7 @@
<string name="action_edit_poll">"Muokkaa kyselyä"</string>
<string name="action_enable">"Ota käyttöön"</string>
<string name="action_end_poll">"Lopeta kysely"</string>
<string name="action_enter_pin">"Syötä PIN-koodi"</string>
<string name="action_enter_pin">"Anna PIN-koodi"</string>
<string name="action_explore_public_spaces">"Selaa julkisia tiloja"</string>
<string name="action_finish">"Valmis"</string>
<string name="action_forgot_password">"Unohditko salasanan?"</string>
@ -220,7 +220,7 @@
<string name="common_empty_file">"Tyhjä tiedosto"</string>
<string name="common_encryption">"Salaus"</string>
<string name="common_encryption_enabled">"Salaus käytössä"</string>
<string name="common_enter_your_pin">"Syötä PIN-koodisi"</string>
<string name="common_enter_your_pin">"Anna PIN-koodisi"</string>
<string name="common_error">"Virhe"</string>
<string name="common_error_registering_pusher_android">"Tapahtui virhe. Et välttämättä saa ilmoituksia uusista viesteistä. Tee ilmoitusten vianmääritys asetuksista.
@ -272,6 +272,7 @@ Syy: %1$s."</string>
<string name="common_offline">"Ei yhteyttä"</string>
<string name="common_open_source_licenses">"Avoimen lähdekoodin lisenssit"</string>
<string name="common_or">"tai"</string>
<string name="common_other_options">"Muut vaihtoehdot"</string>
<string name="common_password">"Salasana"</string>
<string name="common_people">"Ihmiset"</string>
<string name="common_permalink">"Pysyvä linkki"</string>
@ -453,6 +454,7 @@ Haluatko varmasti jatkaa?"</string>
<string name="screen_create_poll_remove_accessibility_label">"Poista %1$s"</string>
<string name="screen_create_poll_settings_section_title">"Asetukset"</string>
<string name="screen_media_picker_error_failed_selection">"Median valinta epäonnistui, yritä uudelleen."</string>
<string name="screen_onboarding_welcome_back">"Tervetuloa takaisin"</string>
<string name="screen_pinned_timeline_empty_state_description">"Paina viestiä ja valitse “%1$s” lisätäksesi sen tänne."</string>
<string name="screen_pinned_timeline_empty_state_headline">"Kiinnitä tärkeät viestit, jotta ne löytyvät helposti."</string>
<plurals name="screen_pinned_timeline_screen_title">

View file

@ -156,6 +156,7 @@
<string name="action_send_voice_message">"Envoyer un message vocal"</string>
<string name="action_share">"Partager"</string>
<string name="action_share_link">"Partager le lien"</string>
<string name="action_share_live_location">"Partager la position en continu"</string>
<string name="action_show">"Afficher"</string>
<string name="action_sign_in_again">"Se connecter à nouveau"</string>
<string name="action_signout">"Se déconnecter"</string>
@ -271,6 +272,7 @@ Raison : %1$s."</string>
<string name="common_offline">"Hors ligne"</string>
<string name="common_open_source_licenses">"Licences open source"</string>
<string name="common_or">"ou"</string>
<string name="common_other_options">"Autres options"</string>
<string name="common_password">"Mot de passe"</string>
<string name="common_people">"Personnes"</string>
<string name="common_permalink">"Permalien"</string>
@ -452,6 +454,7 @@ Raison : %1$s."</string>
<string name="screen_create_poll_remove_accessibility_label">"Supprimer %1$s"</string>
<string name="screen_create_poll_settings_section_title">"Paramètres"</string>
<string name="screen_media_picker_error_failed_selection">"Échec de la sélection du média, veuillez réessayer."</string>
<string name="screen_onboarding_welcome_back">"Bon retour parmi nous"</string>
<string name="screen_pinned_timeline_empty_state_description">"Cliquez (clic long) sur un message et choisissez « %1$s » pour quil apparaisse ici."</string>
<string name="screen_pinned_timeline_empty_state_headline">"Épinglez les messages importants pour leur donner plus de visibilité"</string>
<plurals name="screen_pinned_timeline_screen_title">

View file

@ -156,6 +156,7 @@
<string name="action_send_voice_message">"Hangüzenet küldése"</string>
<string name="action_share">"Megosztás"</string>
<string name="action_share_link">"Hivatkozás megosztása"</string>
<string name="action_share_live_location">"Valós idejű hely megosztása"</string>
<string name="action_show">"Megjelenítés"</string>
<string name="action_sign_in_again">"Jelentkezzen be újra"</string>
<string name="action_signout">"Kijelentkezés"</string>
@ -402,6 +403,7 @@ Ok: %1$s."</string>
<string name="crypto_identity_change_profile_pin_violation">"%1$s személyazonossága megváltozott."</string>
<string name="crypto_identity_change_verification_violation_new">"%1$s (%2$s) ellenőrzött személyazonossága megváltozott. %3$s"</string>
<string name="crypto_identity_change_withdraw_verification_action">"Ellenőrzés visszavonása"</string>
<string name="dialog_allow_access">"Hozzáférés engedélyezése"</string>
<string name="dialog_confirm_link_message">"A(z) %1$s hivatkozás átviszi egy másik webhelyre: %2$s
Biztos, hogy folytatja?"</string>

View file

@ -74,7 +74,7 @@
<string name="action_copy_link_to_message">"Copia collegamento al messaggio"</string>
<string name="action_copy_text">"Copia testo"</string>
<string name="action_create">"Crea"</string>
<string name="action_create_room">"Crea una stanza"</string>
<string name="action_create_room">"Crea stanza"</string>
<string name="action_deactivate">"Disattiva"</string>
<string name="action_deactivate_account">"Disattiva account"</string>
<string name="action_decline">"Rifiuta"</string>

View file

@ -1,11 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="a11y_add_reaction">"Pridėti reakciją: %1$s"</string>
<string name="a11y_address">"Adresas"</string>
<string name="a11y_avatar">"Pseudoportretas"</string>
<string name="a11y_collapse_message_text_field">"Sumažinti žinutės teksto lauką"</string>
<string name="a11y_delete">"Ištrinti"</string>
<string name="a11y_hide_password">"Slėpti slaptažodį"</string>
<string name="a11y_join_call">"Jungtis prie skambučio"</string>
<string name="a11y_send_files">"Siųsti failus"</string>
<string name="a11y_show_password">"Rodyti slaptažodį"</string>
<string name="a11y_user_menu">"Vartotojo meniu"</string>
<string name="a11y_your_avatar">"Jūsų pseudoportretas"</string>
<string name="action_accept">"Priimti"</string>
<string name="action_back">"Atgal"</string>
<string name="action_cancel">"Atšaukti"</string>
@ -17,27 +22,32 @@
<string name="action_continue">"Tęsti"</string>
<string name="action_copy">"Kopijuoti"</string>
<string name="action_copy_link">"Kopijuoti nuorodą"</string>
<string name="action_copy_link_to_message">"Kopijuoti nuorodą į žinutę"</string>
<string name="action_copy_text">"Kopijuoti tekstą"</string>
<string name="action_create">"Sukurti"</string>
<string name="action_create_room">"Kurti kambarį"</string>
<string name="action_decline">"Atmesti"</string>
<string name="action_disable">"Išjungti"</string>
<string name="action_done">"Atlikta"</string>
<string name="action_edit">"Taisyti"</string>
<string name="action_edit">"Redaguoti"</string>
<string name="action_enable">"Įjungti"</string>
<string name="action_forgot_password">"Pamiršote slaptažodį?"</string>
<string name="action_forward">"Persiųsti"</string>
<string name="action_invite">"Kviesti"</string>
<string name="action_invite_friends">"Pakviesti žmonių"</string>
<string name="action_invite_friends_to_app">"Kviesti žmones į %1$s"</string>
<string name="action_invite_people_to_app">"Kviesti žmones į „%1$s“"</string>
<string name="action_invites_list">"Kvietimai"</string>
<string name="action_learn_more">"Sužinoti daugiau"</string>
<string name="action_leave">"Palikti"</string>
<string name="action_leave">"Išeiti"</string>
<string name="action_leave_conversation">"Palikti pokalbį"</string>
<string name="action_leave_room">"Palikti kambarį"</string>
<string name="action_load_more">"Įkelti daugiau"</string>
<string name="action_next">"Toliau"</string>
<string name="action_next">"Tolesnis"</string>
<string name="action_no">"Ne"</string>
<string name="action_not_now">"Ne dabar"</string>
<string name="action_ok">"Gerai"</string>
<string name="action_open_with">"Atverti su"</string>
<string name="action_quick_reply">"Sparčiai atsakyti"</string>
<string name="action_quote">"Cituoti"</string>
<string name="action_remove">"Šalinti"</string>
@ -59,15 +69,18 @@
<string name="action_start">"Pradėti"</string>
<string name="action_start_chat">"Pradėti pokalbį"</string>
<string name="action_start_verification">"Pradėti patvirtinimą"</string>
<string name="action_static_map_load">"Palieskite norint įkelti žemėlapį"</string>
<string name="action_take_photo">"Fotografuoti"</string>
<string name="action_view_source">"Peržiūrėti šaltinį"</string>
<string name="action_yes">"Taip"</string>
<string name="common_about">"Apie"</string>
<string name="common_acceptable_use_policy">"Priimtino naudojimo politika"</string>
<string name="common_analytics">"Analitika"</string>
<string name="common_android_shortcuts_remove_reason_left_room">"Jūs išėjote iš kambario"</string>
<string name="common_audio">"Garsas"</string>
<string name="common_bubbles">"Burbulai"</string>
<string name="common_chat_backup">"Pokalbio atsarginė kopija"</string>
<string name="common_copyright">"Autorinės teisės"</string>
<string name="common_creating_room">"Kuriamas kambarys…"</string>
<string name="common_current_user_left_room">"Išėjo iš kambario"</string>
<string name="common_decryption_error">"Iššifravimo klaida"</string>
@ -80,6 +93,7 @@
<string name="common_error">"Klaida"</string>
<string name="common_file">"Failas"</string>
<string name="common_file_saved_on_disk_android">"Failas išsaugotas aplanke Atsisiuntimai"</string>
<string name="common_forward_message">"Persiųsti žinutę"</string>
<string name="common_gif">"GIF"</string>
<string name="common_image">"Paveikslėlis"</string>
<string name="common_invite_unknown_profile">"Šio Matrix ID nepavyksta rasti, todėl kvietimas gali būti negautas."</string>
@ -95,18 +109,20 @@
<string name="common_message_layout">"Žinutės išdėstymas"</string>
<string name="common_message_removed">"Žinutė pašalinta"</string>
<string name="common_modern">"Modernus"</string>
<string name="common_mute">"Nutildyti"</string>
<string name="common_no_results">"Nėra rezultatų"</string>
<string name="common_offline">"Neprisijungta"</string>
<string name="common_password">"Slaptažodis"</string>
<string name="common_people">"Žmonės"</string>
<string name="common_permalink">"Nuolatinė nuoroda"</string>
<string name="common_privacy_policy">"Privatumo politika"</string>
<string name="common_private_room">"Privatus kambarys"</string>
<string name="common_reactions">"Reakcijos"</string>
<string name="common_replying_to">"Atsakant %1$s"</string>
<string name="common_report_a_bug">"Pranešti apie klaidą"</string>
<string name="common_report_submitted">"Skundas pateiktas"</string>
<string name="common_room_name">"Kambario pavadinimas"</string>
<string name="common_room_name_placeholder">"pvz., Jūsų projekto pavadinimas"</string>
<string name="common_room_name_placeholder">"pvz., jūsų projekto pavadinimas"</string>
<string name="common_search_for_someone">"Ieškoti ko nors"</string>
<string name="common_search_results">"Paieškos rezultatai"</string>
<string name="common_security">"Saugumas"</string>
@ -119,11 +135,14 @@
<string name="common_sticker">"Lipdukas"</string>
<string name="common_success">"Pavyko"</string>
<string name="common_suggestions">"Pasiūlymai"</string>
<string name="common_syncing">"Sinchronizuojama"</string>
<string name="common_third_party_notices">"Trečiųjų šalių pranešimai"</string>
<string name="common_topic">"Tema"</string>
<string name="common_topic_placeholder">"Apie ką šis kambarys?"</string>
<string name="common_topic_placeholder">"Apie ką yra šis kambarys?"</string>
<string name="common_unable_to_decrypt">"Nepavyko iššifruoti"</string>
<string name="common_unable_to_invite_message">"Kvietimų nepavyko išsiųsti vienam ar keliems vartotojams."</string>
<string name="common_unable_to_invite_title">"Nepavyko išsiųsti kvietimo (-ų)"</string>
<string name="common_unmute">"Atšaukti nutildymą"</string>
<string name="common_unsupported_event">"Nepalaikomas įvykis"</string>
<string name="common_username">"Vartotojo vardas"</string>
<string name="common_verification_cancelled">"Patvirtinimas atšauktas"</string>

View file

@ -27,6 +27,7 @@
<string name="a11y_pause">"Setter på pause"</string>
<string name="a11y_paused_voice_message">"Talemelding, lengde: %1$s, nåværende posisjon: %2$s"</string>
<string name="a11y_pin_field">"PIN-felt"</string>
<string name="a11y_pinned_location">"Festet lokasjon"</string>
<string name="a11y_play">"Spill av"</string>
<string name="a11y_playback_speed">"Avspillingshastighet"</string>
<string name="a11y_poll">"Avstemning"</string>
@ -45,9 +46,11 @@
<string name="a11y_remove_reaction_with">"Fjern reaksjonen med %1$s"</string>
<string name="a11y_room_avatar">"Romavatar"</string>
<string name="a11y_send_files">"Sende filer"</string>
<string name="a11y_sender_location">"Avsenderens lokasjon"</string>
<string name="a11y_session_verification_time_limited_action_required">"Tidsbegrenset handling kreves, du har ett minutt på deg til å verifisere"</string>
<string name="a11y_show_password">"Vis passord"</string>
<string name="a11y_start_call">"Start en samtale"</string>
<string name="a11y_start_voice_call">"Start et taleanrop"</string>
<string name="a11y_tombstoned_room">"Deaktivert rom"</string>
<string name="a11y_user_avatar">"Brukeravatar"</string>
<string name="a11y_user_menu">"Brukermeny"</string>
@ -272,6 +275,7 @@
<string name="common_offline">"Frakoblet"</string>
<string name="common_open_source_licenses">"Åpen kildekode-lisenser"</string>
<string name="common_or">"eller"</string>
<string name="common_other_options">"Andre alternativer"</string>
<string name="common_password">"Passord"</string>
<string name="common_people">"Personer"</string>
<string name="common_permalink">"Permalenke"</string>
@ -393,6 +397,8 @@
<string name="common_waiting_for_decryption_key">"Venter på denne meldingen"</string>
<string name="common_world_readable_history">"Alle kan se historikk"</string>
<string name="common_you">"Du"</string>
<string name="crypto_event_key_forwarded_known_profile_dialog_content">"%1$s(%2$s ) delte denne meldingen siden du ikke var i rommet da den ble sendt."</string>
<string name="crypto_event_key_forwarded_unknown_profile_dialog_content">"%1$s delte denne meldingen siden du ikke var i rommet da den ble sendt."</string>
<string name="crypto_history_visible">"Dette rommet er konfigurert slik at nye medlemmer kan lese historikken.%1$s"</string>
<string name="crypto_identity_change_pin_violation">"%1$s\'s identitet ble tilbakestilt. %2$s"</string>
<string name="crypto_identity_change_pin_violation_new">"%1$ss %2$s-identitet ble tilbakestilt. %3$s"</string>
@ -449,6 +455,7 @@ Er du sikker på at du vil fortsette?"</string>
<string name="screen_create_poll_remove_accessibility_label">"Fjern %1$s"</string>
<string name="screen_create_poll_settings_section_title">"Innstillinger"</string>
<string name="screen_media_picker_error_failed_selection">"Kunne ikke velge medium, prøv igjen."</string>
<string name="screen_onboarding_welcome_back">"Velkommen tilbake"</string>
<string name="screen_pinned_timeline_empty_state_description">"Trykk på en melding og velg “%1$s” for å inkludere her."</string>
<string name="screen_pinned_timeline_empty_state_headline">"Fest viktige meldinger slik at de lett kan ses"</string>
<plurals name="screen_pinned_timeline_screen_title">
@ -483,12 +490,14 @@ Er du sikker på at du vil fortsette?"</string>
<string name="screen_share_open_apple_maps">"Åpne i Apple Maps"</string>
<string name="screen_share_open_google_maps">"Åpne i Google Maps"</string>
<string name="screen_share_open_osm_maps">"Åpne i OpenStreetMap"</string>
<string name="screen_share_this_location_action">"Del denne posisjonen"</string>
<string name="screen_share_this_location_action">"Del valgt lokasjon"</string>
<string name="screen_space_list_description">"Områder du har opprettet eller blitt med i."</string>
<string name="screen_space_list_details">"%1$s • %2$s"</string>
<string name="screen_space_list_empty_state_title">"Opprett område for å organisere rom"</string>
<string name="screen_space_list_parent_space">"%1$s område"</string>
<string name="screen_space_list_title">"Områder"</string>
<string name="screen_static_location_sheet_timestamp_description">"Delt %1$s"</string>
<string name="screen_static_location_sheet_title">"På kartet"</string>
<string name="screen_timeline_item_menu_send_failure_changed_identity">"Meldingen ble ikke sendt fordi %1$ss verifiserte identitet er tilbakestilt."</string>
<string name="screen_timeline_item_menu_send_failure_unsigned_device">"Meldingen ble ikke sendt fordi %1$s ikke har verifisert alle enheter."</string>
<string name="screen_timeline_item_menu_send_failure_you_unsigned_device">"Meldingen ble ikke sendt fordi du ikke har verifisert en eller flere av enhetene dine."</string>

View file

@ -2,6 +2,7 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="a11y_add_reaction">"Lägg till reaktion: %1$s"</string>
<string name="a11y_avatar">"Avatar"</string>
<string name="a11y_collapse_message_text_field">"Krymp meddelandetextfältet"</string>
<string name="a11y_delete">"Radera"</string>
<plurals name="a11y_digits_entered">
<item quantity="one">"%1$d siffra angiven"</item>
@ -10,6 +11,7 @@
<string name="a11y_edit_avatar">"Redigera avatar"</string>
<string name="a11y_edit_room_address_hint">"Den fullständiga adressen kommer att vara %1$s"</string>
<string name="a11y_encryption_details">"Krypteringsdetaljer"</string>
<string name="a11y_expand_message_text_field">"Expandera meddelandetextfältet"</string>
<string name="a11y_hide_password">"Dölj lösenord"</string>
<string name="a11y_join_call">"Anslut till samtal"</string>
<string name="a11y_jump_to_bottom">"Hoppa till botten"</string>
@ -40,7 +42,7 @@
<string name="a11y_remove_reaction_with">"Ta bort reaktion med %1$s"</string>
<string name="a11y_room_avatar">"Rumsavatar"</string>
<string name="a11y_send_files">"Skicka filer"</string>
<string name="a11y_session_verification_time_limited_action_required">"Tidsbegränsad åtgärd krävs"</string>
<string name="a11y_session_verification_time_limited_action_required">"Tidsbegränsad åtgärd krävs, du har en minut på dig att verifiera"</string>
<string name="a11y_show_password">"Visa lösenord"</string>
<string name="a11y_start_call">"Starta ett samtal"</string>
<string name="a11y_tombstoned_room">"Gravstensmärkt rum"</string>
@ -103,6 +105,7 @@
<string name="action_leave">"Lämna"</string>
<string name="action_leave_conversation">"Lämna konversation"</string>
<string name="action_leave_room">"Lämna rum"</string>
<string name="action_leave_space">"Lämna utrymmet"</string>
<string name="action_load_more">"Ladda mer"</string>
<string name="action_manage_account">"Hantera konto"</string>
<string name="action_manage_devices">"Hantera enheter"</string>
@ -164,6 +167,8 @@
<string name="banner_migrate_to_native_sliding_sync_title">"Uppgradering tillgänglig"</string>
<string name="common_about">"Om"</string>
<string name="common_acceptable_use_policy">"Policy för godtagbar användning"</string>
<string name="common_add_account">"Lägg till ett konto"</string>
<string name="common_add_another_account">"Lägg till ytterligare ett konto"</string>
<string name="common_adding_caption">"Lägga till bildtext"</string>
<string name="common_advanced_settings">"Avancerade inställningar"</string>
<string name="common_an_image">"en bild"</string>
@ -184,6 +189,7 @@
<string name="common_current_user_rejected_invite">"Inbjudan avvisad"</string>
<string name="common_dark">"Mörkt"</string>
<string name="common_decryption_error">"Avkrypteringsfel"</string>
<string name="common_description">"Beskrivning"</string>
<string name="common_developer_options">"Utvecklaralternativ"</string>
<string name="common_device_id">"Enhets-ID"</string>
<string name="common_direct_chat">"Direktchatt"</string>
@ -293,12 +299,14 @@ Anledning:%1$s."</string>
<string name="common_search_results">"Sökresultat"</string>
<string name="common_security">"Säkerhet"</string>
<string name="common_seen_by">"Sett av"</string>
<string name="common_select_account">"Välj ett konto"</string>
<string name="common_send_to">"Skicka till"</string>
<string name="common_sending">"Skickar …"</string>
<string name="common_sending_failed">"Misslyckades att skicka"</string>
<string name="common_sent">"Skickat"</string>
<string name="common_sentence_delimiter">". "</string>
<string name="common_server_not_supported">"Servern stöds inte"</string>
<string name="common_server_unreachable">"Servern kan inte nås"</string>
<string name="common_server_url">"Server-URL"</string>
<string name="common_settings">"Inställningar"</string>
<string name="common_shared_location">"Delade plats"</string>
@ -376,6 +384,8 @@ Anledning:%1$s."</string>
<string name="dialog_video_quality_selector_subtitle_file_size">"Den maximala tillåtna filstorleken är: %1$s"</string>
<string name="dialog_video_quality_selector_subtitle_no_file_size">"Välj kvaliteten på videon du vill ladda upp."</string>
<string name="dialog_video_quality_selector_title">"Välj videouppladdningskvalitet"</string>
<string name="emoji_picker_search_placeholder">"Sök emojier"</string>
<string name="error_account_already_logged_in">"Du är redan inloggad på den här enheten som %1$s."</string>
<string name="error_account_creation_not_possible">"Din hemserver måste uppgraderas för att stödja Matrix Authentication Service och skapande av konto."</string>
<string name="error_failed_creating_the_permalink">"Misslyckades att skapa permalänken"</string>
<string name="error_failed_loading_map">"%1$s kunde inte ladda kartan. Vänligen försök igen senare."</string>
@ -436,7 +446,7 @@ Anledning:%1$s."</string>
<string name="screen_share_open_apple_maps">"Öppna i Apple Maps"</string>
<string name="screen_share_open_google_maps">"Öppna i Google Maps"</string>
<string name="screen_share_open_osm_maps">"Öppna i OpenStreetMap"</string>
<string name="screen_share_this_location_action">"Dela den här platsen"</string>
<string name="screen_share_this_location_action">"Dela fäst plats"</string>
<string name="screen_space_list_description">"Utrymmen som du har skapat eller gått med i."</string>
<string name="screen_space_list_details">"%1$s • %2$s"</string>
<string name="screen_space_list_title">"Utrymmen"</string>

View file

@ -27,6 +27,7 @@
<string name="a11y_pause">"Pause"</string>
<string name="a11y_paused_voice_message">"Voice message, duration: %1$s, current position: %2$s"</string>
<string name="a11y_pin_field">"PIN field"</string>
<string name="a11y_pinned_location">"Pinned location"</string>
<string name="a11y_play">"Play"</string>
<string name="a11y_playback_speed">"Playback speed"</string>
<string name="a11y_poll">"Poll"</string>
@ -45,6 +46,7 @@
<string name="a11y_remove_reaction_with">"Remove reaction with %1$s"</string>
<string name="a11y_room_avatar">"Room avatar"</string>
<string name="a11y_send_files">"Send files"</string>
<string name="a11y_sender_location">"Sender location"</string>
<string name="a11y_session_verification_time_limited_action_required">"Time limited action required, you have one minute to verify"</string>
<string name="a11y_show_password">"Show password"</string>
<string name="a11y_start_call">"Start a call"</string>
@ -273,6 +275,7 @@ Reason: %1$s."</string>
<string name="common_offline">"Offline"</string>
<string name="common_open_source_licenses">"Open source licenses"</string>
<string name="common_or">"or"</string>
<string name="common_other_options">"Other options"</string>
<string name="common_password">"Password"</string>
<string name="common_people">"People"</string>
<string name="common_permalink">"Permalink"</string>
@ -454,6 +457,7 @@ Are you sure you want to continue?"</string>
<string name="screen_create_poll_remove_accessibility_label">"Remove %1$s"</string>
<string name="screen_create_poll_settings_section_title">"Settings"</string>
<string name="screen_media_picker_error_failed_selection">"Failed selecting media, please try again."</string>
<string name="screen_onboarding_welcome_back">"Welcome back"</string>
<string name="screen_pinned_timeline_empty_state_description">"Press on a message and choose “%1$s” to include here."</string>
<string name="screen_pinned_timeline_empty_state_headline">"Pin important messages so that they can be easily discovered"</string>
<plurals name="screen_pinned_timeline_screen_title">
@ -488,12 +492,14 @@ Are you sure you want to continue?"</string>
<string name="screen_share_open_apple_maps">"Open in Apple Maps"</string>
<string name="screen_share_open_google_maps">"Open in Google Maps"</string>
<string name="screen_share_open_osm_maps">"Open in OpenStreetMap"</string>
<string name="screen_share_this_location_action">"Share this location"</string>
<string name="screen_share_this_location_action">"Share selected location"</string>
<string name="screen_space_list_description">"Spaces you have created or joined."</string>
<string name="screen_space_list_details">"%1$s • %2$s"</string>
<string name="screen_space_list_empty_state_title">"Create spaces to organize rooms"</string>
<string name="screen_space_list_parent_space">"%1$s space"</string>
<string name="screen_space_list_title">"Spaces"</string>
<string name="screen_static_location_sheet_timestamp_description">"Shared %1$s"</string>
<string name="screen_static_location_sheet_title">"On the map"</string>
<string name="screen_timeline_item_menu_send_failure_changed_identity">"Message not sent because %1$ss verified identity was reset."</string>
<string name="screen_timeline_item_menu_send_failure_unsigned_device">"Message not sent because %1$s has not verified all devices."</string>
<string name="screen_timeline_item_menu_send_failure_you_unsigned_device">"Message not sent because you have not verified one or more of your devices."</string>

View file

@ -45,7 +45,7 @@ private const val versionMonth = 3
* Release number in the month. Value must be in [0,99].
* Do not update this value. it is updated by the release script.
*/
private const val versionReleaseNumber = 0
private const val versionReleaseNumber = 2
object Versions {
/**

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b52b845a62029f35301b0bcc09400c9ba35d956a1c7cc82a3ed0a3cdedd4932d
size 38134
oid sha256:4c0f9f0948da8553e64cbd3dd8643420dbbe0b2ee0655ef09b4d4869495f8f67
size 38036

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dca1955ed934e6b486decb34a6f0e29ab6539501834c45e8a525f2ad566315f4
size 38519
oid sha256:53f201aeace81ee0564d41542bfc8ea904d71527746ead6cbd6e9faddf29e699
size 38421

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8347a215ae8d8c17ba9485d261ae13d13c30bddf9453621b95dd49dabbf9e88e
size 38789
oid sha256:15200b3f62fbd9b0ecab51560faa4696f384daf7463a407445b2191f94c13645
size 38695

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:da8ace309d8bee543c098698f96c119c7a6fce429723960f5e7c1433b730c92f
size 43752
oid sha256:059452488e08fcb9f35afe0db8805665417108ed0593561251f648b91eb7c3ff
size 43688

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:60bbde8473f333140b2a0191bb093a67e7f354a2f999356d809168dfa50c8eaf
size 35561
oid sha256:30358430cd572face46c5d6e060fe0b93947670aa4c4caa091f8a50521ae36a7
size 35467

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9526607fd3b013a2061f98c5c9dd32dd134ae5e08faa21b15d9ba3a74c6a1f3e
size 40678
oid sha256:7b3ed6ddd42ca136fdb7ad0f18d03e112594c0d9de93264bc2659e1b3a4e1e75
size 40614

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7fd983551fdae995ad39739aadb1893d2870544138e514c1551ef93dc1cf5922
size 31665
oid sha256:1b6828f3878d95a0357b399072acce35b073767fdbbfea90fe9eca73f60af802
size 31600

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:db51d3123ccb4d8bcff21a665a794d8069dfa99e99c986d415e4fd4750d2b4f5
size 31888
oid sha256:91a83c3de10fea2e5edf3d96bc9ecc1fd81000ec957970696bca6c13d4d9dca3
size 31820

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:88f145979ddab968ef8ba7cc6e332d3382e812aa3fb08945f3df303a1b45c38d
size 19531
oid sha256:fae8924163db1235fa1aa601e3a61615c606cbca907ffacfb988482b52156ae4
size 19811

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fb4f73f673f25ab306727f8dc194f380f196b4b15eec5847d9249d941b260506
size 17219
oid sha256:285ff38423ef63928badae705273b66865f62bb2938f7c8598291e9978266707
size 16885

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ddbf1f7c9a101256e4cb794f70529ac48d7815d154b89de5940911abef9c7503
size 19333
oid sha256:2274075943410f96d90d8b232502bb0407a3009cb7ccdcfc9701ffbfb4bb0345
size 19783

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0bccc5989905f8ef3a9f377dbbc115536bb57109b06b6154c4bdc20c5e766aca
size 19228
oid sha256:9333d00baec2b4378d134c71d7b96e3c0ff053ce128027e769fc06c0f01653e2
size 19611

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:285ff38423ef63928badae705273b66865f62bb2938f7c8598291e9978266707
size 16885

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2274075943410f96d90d8b232502bb0407a3009cb7ccdcfc9701ffbfb4bb0345
size 19783

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9333d00baec2b4378d134c71d7b96e3c0ff053ce128027e769fc06c0f01653e2
size 19611

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bdf518794265ae8575c3ebea6c15c00c8b5d00b60bb6f959632daeab7c26ee0e
size 37965
oid sha256:ab9145524bb4aa2451827f92684a0a8be08db00be3cc3b69ac58f9e4d69c1bf2
size 38097

File diff suppressed because it is too large Load diff

View file

@ -49,6 +49,7 @@ class KonsistComposableTest {
"CompoundSemanticColorsDarkHc",
"HorizontalFloatingToolbarItem",
"HorizontalFloatingToolbarSeparator",
"DebugNavStateNodeHost",
)
.assertTrue(
additionalMessage =

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:339d402bffbd0ddf8828c0a025e9521b7fcc28659dfb5b3c7eb143f5d3fe5696
size 18750
oid sha256:95a8d94f223cdb1f45fb43406688c7ae103a0e6c8cead84c7726795c553a3b54
size 19773

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:500749c5e5327dab22166a33eb0dbaa0fe027f161a38fd302d5460a76dc6d8aa
size 34648
oid sha256:0cf81beb22fca6641de9e08d69da0b6f2ed1e2593296987ac7c052c89010ee75
size 35449

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7aa566b480a4b051a64f3a46a743df038a4924c2bc33c3218f6386cc6adb4bb8
size 33134
oid sha256:0281adefc90c5ec6a9788a142bca2bc486f1957e943791bb61c1e20e707ab0a7
size 33926

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:339d402bffbd0ddf8828c0a025e9521b7fcc28659dfb5b3c7eb143f5d3fe5696
size 18750
oid sha256:95a8d94f223cdb1f45fb43406688c7ae103a0e6c8cead84c7726795c553a3b54
size 19773

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f6fb324c833f5065586079f5e5dc5b89a7351a2ebdc25003839181766539c818
size 18380
oid sha256:ece0a2814e93bf971c2bfd5309cd239d98795d8ae72041c0a48f0f304250a017
size 19325

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:29761c66f1e2a21033097fcffb912ffe0df1604d3b4236316083f7f513713b93
size 32792
oid sha256:982df0a262833543c2d4cd56059e48e9020f3bf5b00843acec5b92066dd6ffb3
size 33522

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dd6468e93b9fbb3e0c3f37d5be3577f8b576e1d4763b2f8efec35380d938090b
size 31381
oid sha256:6d05adff48c9c6dff7178c556d746f8729e45cb100d074f3bb6a2d783211612a
size 32108

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f6fb324c833f5065586079f5e5dc5b89a7351a2ebdc25003839181766539c818
size 18380
oid sha256:ece0a2814e93bf971c2bfd5309cd239d98795d8ae72041c0a48f0f304250a017
size 19325

View file

@ -142,9 +142,14 @@ if not args.simulate:
# open file to write in binary mode
with open(target, "wb") as file:
# get request
response = requests.get(url, headers=headers)
# write to file
file.write(response.content)
with requests.get(url, headers=headers, stream=True) as response:
total = int(response.headers.get('Content-Length', 0))
totalStr = "{0:.2f}".format(total / 1024 / 1024)
for chunk in response.iter_content(chunk_size=65536):
if chunk: # filter out keep-alive new chunks
file.write(chunk)
current = "{0:.2f}".format(file.tell() / 1024 / 1024)
print(f"Downloaded {current}/{totalStr} MB", end="\r")
print("Verifying file size...")
# get the file size
size = os.path.getsize(target)

View file

@ -131,7 +131,15 @@ git flow release start "${version}"
# Note: in case the release is already started and the script is started again, checkout the release branch again.
ret=$?
if [[ $ret -ne 0 ]]; then
printf "Mmh, it seems that the release is already started. Checking out the release branch...\n"
printf "Mmh, it seems that the release is already started. I'm displaying the changes now:\n"
git diff --stat "release/${version}" origin/main
printf "Do you want to continue the release using its contents?\n\n"
read -r -p "Continue (yes/no) default to yes? " doContinue
doContinue=${doContinue:-yes}
if [ "${doContinue}" == "no" ]; then
printf "OK, exiting, you can start the release again with the command 'git flow release start %s'\n" "${version}"
exit 1
fi
git checkout "release/${version}"
fi