mirror of
https://github.com/element-hq/element-android
synced 2024-11-23 09:55:40 +03:00
Merge branch 'develop' into feature/nfe/app_layout_tests
This commit is contained in:
commit
2892a5701a
904 changed files with 29195 additions and 6732 deletions
1
.gitattributes
vendored
1
.gitattributes
vendored
|
@ -1 +1,2 @@
|
|||
**/snapshots/**/*.png filter=lfs diff=lfs merge=lfs -text
|
||||
**/src/androidTest/assets/*.realm filter=lfs diff=lfs merge=lfs -text
|
||||
|
|
59
.github/ISSUE_TEMPLATE/release.yml
vendored
59
.github/ISSUE_TEMPLATE/release.yml
vendored
|
@ -10,7 +10,6 @@ body:
|
|||
id: checklist
|
||||
attributes:
|
||||
label: Release checklist
|
||||
description: For the template example, we are releasing the version 1.2.3. Replace 1.2.3 with the version in the issue body.
|
||||
placeholder: |
|
||||
If you are reading this, you have deleted the content of the release template: undo the deletion or start again.
|
||||
value: |
|
||||
|
@ -20,34 +19,11 @@ body:
|
|||
- [ ] Check the update of the store descriptions (using Google Translate if necessary) to ensure that the changes are acceptable to be published to the stores.
|
||||
- [ ] While Weblate is locked, and after the PR from Weblate has been merged, handle all the TODOs in the main `strings.xml` file
|
||||
- [ ] Run the script `./tools/release/pushPlayStoreMetaData.sh`. You can check in the GooglePlay console the Activity log to check the effect.
|
||||
|
||||
- [ ] Ensure all [the required PRs](https://github.com/vector-im/element-android/pulls?q=is%3Aopen+is%3Apr+label%3AZ-NextRelease) have been merged
|
||||
|
||||
### Do the release
|
||||
|
||||
- [ ] Make sure `develop` and `main` are up to date (git pull)
|
||||
- [ ] Checkout develop and create a release with gitflow, branch name `release/1.2.3`
|
||||
- [ ] Check the crashes from the PlayStore
|
||||
- [ ] Check the rageshake with the current dev version: https://github.com/matrix-org/element-android-rageshakes/labels/1.2.3-dev
|
||||
- [ ] Run the integration test, and especially `UiAllScreensSanityTest.allScreensTest()`
|
||||
- [ ] Create an account on matrix.org and do some smoke tests that the sanity test does not cover like: 1-1 call, 1-1 video call, Jitsi call for instance
|
||||
- [ ] Run towncrier: `towncrier build --version v1.2.3 --draft` (remove `--draft` do write the file CHANGES.md)
|
||||
- [ ] Check that the folder `changelog.d` is empty. It can happen that some remaining files stay here
|
||||
- [ ] Check the file CHANGES.md consistency. It's possible to reorder items (most important changes first) or change their section if relevant. Also an opportunity to fix some typo, or rewrite things
|
||||
- [ ] Add file for fastlane under ./fastlane/metadata/android/en-US/changelogs
|
||||
- [ ] (optional) Push the branch and start a draft PR (will not be merged), to check that the CI is happy with all the changes.
|
||||
- [ ] Finish release with gitflow, delete the draft PR (if created)
|
||||
- [ ] Push `main` and the new tag `v1.2.3` to origin
|
||||
- [ ] Checkout `develop`
|
||||
- [ ] Increase version (versionPatch + 2) in `./vector/build.gradle`
|
||||
- [ ] Change the value of SDK_VERSION in the file `./matrix-sdk-android/build.gradle`
|
||||
- [ ] Commit and push `develop`
|
||||
- [ ] Wait for [Buildkite](https://buildkite.com/matrix-dot-org/element-android/builds?branch=main) to build the `main` branch.
|
||||
- [ ] Run the script `~/scripts/releaseElement.sh`. It will download the APKs from Buildkite check them and sign them.
|
||||
- [ ] Install the APK on your phone to check that the upgrade went well (no init sync, etc.)
|
||||
- [ ] Create the release on gitHub [from the tag](https://github.com/vector-im/element-android/tags), copy paste the block from the file CHANGES.md
|
||||
- [ ] Add the 4 signed APKs to the GitHub release
|
||||
- [ ] Ping the Android Internal room
|
||||
- [ ] Run the script ./tools/release/releaseScript.sh and follow the steps.
|
||||
|
||||
### Once tested and validated internally
|
||||
|
||||
|
@ -84,29 +60,9 @@ body:
|
|||
|
||||
The SDK2 and the sample app are released only when Element has been pushed to production.
|
||||
|
||||
- [ ] Checkout the `main` branch on Element Android project
|
||||
- [ ] On the [SDK2 project](https://github.com/matrix-org/matrix-android-sdk2), run the script ./tools/releaseScript.sh and follow the instructions.
|
||||
|
||||
#### On the SDK2 project
|
||||
|
||||
https://github.com/matrix-org/matrix-android-sdk2
|
||||
|
||||
- [ ] Create a release with GitFlow
|
||||
- [ ] Update the value of VERSION_NAME in the file gradle.properties
|
||||
- [ ] Update the files `./build.gradle` and `./gradle/gradle-wrapper.properties` manually, to use the latest version for the dependency. You can get inspired by the same files on Element Android project.
|
||||
- [ ] Run the script `./tools/import_from_element.sh`
|
||||
- [ ] Check the diff in the file `./matrix-sdk-android/build.gradle` and restore what may have been erased (in particular the line `apply plugin: "com.vanniktech.maven.publish"` and the line about the version)
|
||||
- [ ] Let the script finish to build the library
|
||||
- [ ] Update the file `CHANGES.md`
|
||||
- [ ] Finish the release using GitFlow
|
||||
- [ ] Push the branch `main`, the new tag and the branch `develop` to origin
|
||||
|
||||
##### Release on MavenCentral
|
||||
|
||||
- [ ] Checkout the branch `main`
|
||||
- [ ] Run the command `./gradlew publish --no-daemon --no-parallel`. You'll need some non-public element to do so
|
||||
- [ ] Run the command `./gradlew closeAndReleaseRepository`. If it is working well, you can jump directly to the final step of this section.
|
||||
|
||||
If `./gradlew closeAndReleaseRepository` fails (for instance, several repositories are waiting to be handled), you have to close and release the repository manually. Do the following steps:
|
||||
Note: if the step `./gradlew closeAndReleaseRepository` fails (for instance, several repositories are waiting to be handled), you have to close and release the repository manually. Do the following steps:
|
||||
|
||||
- [ ] Connect to https://s01.oss.sonatype.org
|
||||
- [ ] Click on Staging Repositories and check the the files have been uploaded
|
||||
|
@ -114,15 +70,6 @@ body:
|
|||
- [ ] Wait (check Activity tab until step "Repository closed" is displayed)
|
||||
- [ ] Click on release. The staging repository will disappear
|
||||
|
||||
Final step
|
||||
|
||||
- [ ] Check that the release is available in https://repo1.maven.org/maven2/org/matrix/android/matrix-android-sdk2/ (it can take a few minutes)
|
||||
|
||||
##### Release on GitHub
|
||||
|
||||
- [ ] Create the release on GitHub from [the tag](https://github.com/matrix-org/matrix-android-sdk2/tags)
|
||||
- [ ] Upload the AAR on the GitHub release
|
||||
|
||||
### Android SDK2 sample
|
||||
|
||||
https://github.com/matrix-org/matrix-android-sdk2-sample
|
||||
|
|
4
.github/workflows/danger.yml
vendored
4
.github/workflows/danger.yml
vendored
|
@ -11,9 +11,9 @@ jobs:
|
|||
- run: |
|
||||
npm install --save-dev @babel/plugin-transform-flow-strip-types
|
||||
- name: Danger
|
||||
uses: danger/danger-js@11.1.3
|
||||
uses: danger/danger-js@11.2.0
|
||||
with:
|
||||
args: "--dangerfile tools/danger/dangerfile.js"
|
||||
args: "--dangerfile ./tools/danger/dangerfile.js"
|
||||
env:
|
||||
DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }}
|
||||
# Fallback for forks
|
||||
|
|
2
.github/workflows/docs.yml
vendored
2
.github/workflows/docs.yml
vendored
|
@ -10,7 +10,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Build docs
|
||||
run: ./gradlew dokkaHtml
|
||||
|
|
9
.github/workflows/post-pr.yml
vendored
9
.github/workflows/post-pr.yml
vendored
|
@ -16,7 +16,7 @@ env:
|
|||
jobs:
|
||||
|
||||
# More info on should-i-run:
|
||||
# If this fails to run (the IF doesn't complete) then the needs will not be satisfied for any of the
|
||||
# If this fails to run (the IF doesn't complete) then the needs will not be satisfied for any of the
|
||||
# other jobs below, so none will run.
|
||||
# except for the notification job at the bottom which will run all the time, unless should-i-run isn't
|
||||
# successful, or all the other jobs have succeeded
|
||||
|
@ -27,11 +27,12 @@ jobs:
|
|||
if: github.event.pull_request.merged # Additionally require PR to have been completely merged.
|
||||
steps:
|
||||
- run: echo "Run those tests!" # no-op success
|
||||
|
||||
|
||||
ui-tests:
|
||||
name: UI Tests (Synapse)
|
||||
needs: should-i-run
|
||||
runs-on: buildjet-4vcpu-ubuntu-2204
|
||||
timeout-minutes: 90 # We might need to increase it if the time for tests grows
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
@ -52,7 +53,7 @@ jobs:
|
|||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- name: Start synapse server
|
||||
uses: michaelkaye/setup-matrix-synapse@v1.0.3
|
||||
uses: michaelkaye/setup-matrix-synapse@v1.0.4
|
||||
with:
|
||||
uploadLogs: true
|
||||
httpPort: 8080
|
||||
|
@ -94,7 +95,7 @@ jobs:
|
|||
needs:
|
||||
- should-i-run
|
||||
- ui-tests
|
||||
if: always() && (needs.should-i-run.result == 'success' ) && ((needs.codecov-units.result != 'success' ) || (needs.ui-tests.result != 'success') || (needs.integration-tests.result != 'success'))
|
||||
if: always() && (needs.should-i-run.result == 'success' ) && (needs.ui-tests.result != 'success')
|
||||
# No concurrency required, runs every time on a schedule.
|
||||
steps:
|
||||
- uses: michaelkaye/matrix-hookshot-action@v1.0.0
|
||||
|
|
4
.github/workflows/quality.yml
vendored
4
.github/workflows/quality.yml
vendored
|
@ -66,9 +66,9 @@ jobs:
|
|||
yarn add danger-plugin-lint-report --dev
|
||||
- name: Danger lint
|
||||
if: always()
|
||||
uses: danger/danger-js@11.1.3
|
||||
uses: danger/danger-js@11.2.0
|
||||
with:
|
||||
args: "--dangerfile tools/danger/dangerfile-lint.js"
|
||||
args: "--dangerfile ./tools/danger/dangerfile-lint.js"
|
||||
env:
|
||||
DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }}
|
||||
# Fallback for forks
|
||||
|
|
39
.github/workflows/tests.yml
vendored
39
.github/workflows/tests.yml
vendored
|
@ -14,6 +14,7 @@ jobs:
|
|||
tests:
|
||||
name: Runs all tests
|
||||
runs-on: buildjet-4vcpu-ubuntu-2204
|
||||
timeout-minutes: 90 # We might need to increase it if the time for tests grows
|
||||
strategy:
|
||||
matrix:
|
||||
api-level: [28]
|
||||
|
@ -50,7 +51,7 @@ jobs:
|
|||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.8
|
||||
- uses: michaelkaye/setup-matrix-synapse@v1.0.3
|
||||
- uses: michaelkaye/setup-matrix-synapse@v1.0.4
|
||||
with:
|
||||
uploadLogs: true
|
||||
httpPort: 8080
|
||||
|
@ -126,26 +127,26 @@ jobs:
|
|||
# Unneeded as part of the test suite above, kept around in case we want to re-enable them.
|
||||
#
|
||||
# # Build Android Tests
|
||||
# build-android-tests:
|
||||
# name: Build Android Tests
|
||||
# runs-on: ubuntu-latest
|
||||
# build-android-tests:
|
||||
# name: Build Android Tests
|
||||
# runs-on: ubuntu-latest
|
||||
# concurrency:
|
||||
# group: ${{ github.ref == 'refs/heads/main' && format('unit-tests-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('unit-tests-develop-{0}', github.sha) || format('build-android-tests-{0}', github.ref) }}
|
||||
# cancel-in-progress: true
|
||||
# steps:
|
||||
# - uses: actions/checkout@v3
|
||||
# - uses: actions/setup-java@v3
|
||||
# with:
|
||||
# distribution: 'adopt'
|
||||
# java-version: 11
|
||||
# - uses: actions/cache@v3
|
||||
# with:
|
||||
# path: |
|
||||
# ~/.gradle/caches
|
||||
# ~/.gradle/wrapper
|
||||
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
# restore-keys: |
|
||||
# ${{ runner.os }}-gradle-
|
||||
# - name: Build Android Tests
|
||||
# steps:
|
||||
# - uses: actions/checkout@v3
|
||||
# - uses: actions/setup-java@v3
|
||||
# with:
|
||||
# distribution: 'adopt'
|
||||
# java-version: 11
|
||||
# - uses: actions/cache@v3
|
||||
# with:
|
||||
# path: |
|
||||
# ~/.gradle/caches
|
||||
# ~/.gradle/wrapper
|
||||
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
# restore-keys: |
|
||||
# ${{ runner.os }}-gradle-
|
||||
# - name: Build Android Tests
|
||||
# run: ./gradlew clean assembleAndroidTest $CI_GRADLE_ARG_PROPERTIES
|
||||
|
||||
|
|
2
.github/workflows/triage-incoming.yml
vendored
2
.github/workflows/triage-incoming.yml
vendored
|
@ -10,7 +10,7 @@ jobs:
|
|||
# Skip in forks
|
||||
if: github.repository == 'vector-im/element-android'
|
||||
steps:
|
||||
- uses: alex-page/github-project-automation-plus@bb266ff4dde9242060e2d5418e120a133586d488
|
||||
- uses: alex-page/github-project-automation-plus@1f8873e97e3c8f58161a323b7c568c1f623a1c4d
|
||||
with:
|
||||
project: Issue triage
|
||||
column: Incoming
|
||||
|
|
178
.github/workflows/triage-labelled.yml
vendored
178
.github/workflows/triage-labelled.yml
vendored
|
@ -17,7 +17,8 @@ jobs:
|
|||
contains(github.event.issue.labels.*.name, 'Z-IA') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Themes-Custom') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Tags')
|
||||
contains(github.event.issue.labels.*.name, 'A-Tags') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Rich-Text-Editor')
|
||||
steps:
|
||||
- uses: actions/github-script@v5
|
||||
with:
|
||||
|
@ -29,6 +30,23 @@ jobs:
|
|||
labels: ['Z-Labs']
|
||||
})
|
||||
|
||||
apply_Help-Wanted_label:
|
||||
name: Add "Help Wanted" label to all "good first issue" and Hacktoberfest
|
||||
runs-on: ubuntu-latest
|
||||
if: >
|
||||
contains(github.event.issue.labels.*.name, 'good first issue') ||
|
||||
contains(github.event.issue.labels.*.name, 'Hacktoberfest')
|
||||
steps:
|
||||
- uses: actions/github-script@v5
|
||||
with:
|
||||
script: |
|
||||
github.rest.issues.addLabels({
|
||||
issue_number: context.issue.number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
labels: ['Help Wanted']
|
||||
})
|
||||
|
||||
move_needs_info_issues:
|
||||
name: X-Needs-Info issues to Need info column on triage board
|
||||
runs-on: ubuntu-latest
|
||||
|
@ -48,7 +66,13 @@ jobs:
|
|||
# Skip in forks
|
||||
if: >
|
||||
github.repository == 'vector-im/element-android' &&
|
||||
contains(github.event.issue.labels.*.name, 'X-Needs-Design')
|
||||
contains(github.event.issue.labels.*.name, 'X-Needs-Design') &&
|
||||
(contains(github.event.issue.labels.*.name, 'S-Critical') &&
|
||||
(contains(github.event.issue.labels.*.name, 'O-Frequent') ||
|
||||
contains(github.event.issue.labels.*.name, 'O-Occasional')) ||
|
||||
(contains(github.event.issue.labels.*.name, 'S-Major') &&
|
||||
contains(github.event.issue.labels.*.name, 'O-Frequent')) ||
|
||||
contains(github.event.issue.labels.*.name, 'A11y'))
|
||||
steps:
|
||||
- uses: octokit/graphql-action@v2.x
|
||||
id: add_to_project
|
||||
|
@ -56,8 +80,8 @@ jobs:
|
|||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
|
||||
projectNextItem {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
@ -65,7 +89,7 @@ jobs:
|
|||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc0sUA"
|
||||
PROJECT_ID: "PVT_kwDOAM0swc0sUA"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
add_product_issues:
|
||||
|
@ -80,8 +104,8 @@ jobs:
|
|||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
|
||||
projectNextItem {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
@ -89,7 +113,7 @@ jobs:
|
|||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc4AAg6N"
|
||||
PROJECT_ID: "PVT_kwDOAM0swc4AAg6N"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
delight_issues_to_board:
|
||||
|
@ -106,8 +130,8 @@ jobs:
|
|||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
|
||||
projectNextItem {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
@ -115,7 +139,7 @@ jobs:
|
|||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc1HvQ"
|
||||
PROJECT_ID: "PVT_kwDOAM0swc1HvQ"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
move_voice-message_issues:
|
||||
|
@ -131,8 +155,8 @@ jobs:
|
|||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
|
||||
projectNextItem {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
@ -140,7 +164,7 @@ jobs:
|
|||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc2KCw"
|
||||
PROJECT_ID: "PVT_kwDOAM0swc2KCw"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
move_message_bubbles_issues:
|
||||
name: A-Message-Bubbles to Message bubbles board
|
||||
|
@ -155,8 +179,8 @@ jobs:
|
|||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
|
||||
projectNextItem {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
@ -164,7 +188,7 @@ jobs:
|
|||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc3m-g"
|
||||
PROJECT_ID: "PVT_kwDOAM0swc3m-g"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
move_ftue_issues:
|
||||
|
@ -180,8 +204,8 @@ jobs:
|
|||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
|
||||
projectNextItem {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
@ -189,7 +213,7 @@ jobs:
|
|||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc4AAqVx"
|
||||
PROJECT_ID: "PVT_kwDOAM0swc4AAqVx"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
move_WTF_issues:
|
||||
|
@ -205,8 +229,8 @@ jobs:
|
|||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
|
||||
projectNextItem {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
@ -214,7 +238,7 @@ jobs:
|
|||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc4AArk0"
|
||||
PROJECT_ID: "PVT_kwDOAM0swc4AArk0"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
move_element_x_issues:
|
||||
|
@ -235,8 +259,8 @@ jobs:
|
|||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
|
||||
projectNextItem {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
@ -244,5 +268,107 @@ jobs:
|
|||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc4ABTXY"
|
||||
PROJECT_ID: "PVT_kwDOAM0swc4ABTXY"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
ps_features1:
|
||||
name: Add labelled issues to PS features team 1
|
||||
runs-on: ubuntu-latest
|
||||
if: >
|
||||
contains(github.event.issue.labels.*.name, 'A-Polls') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Location-Sharing') ||
|
||||
(contains(github.event.issue.labels.*.name, 'A-Voice-Messages') &&
|
||||
!contains(github.event.issue.labels.*.name, 'A-Broadcast')) ||
|
||||
(contains(github.event.issue.labels.*.name, 'A-Session-Mgmt') &&
|
||||
contains(github.event.issue.labels.*.name, 'A-User-Settings'))
|
||||
steps:
|
||||
- uses: octokit/graphql-action@v2.x
|
||||
id: add_to_project
|
||||
with:
|
||||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PVT_kwDOAM0swc4AHJKF"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
ps_features2:
|
||||
name: Add labelled issues to PS features team 2
|
||||
runs-on: ubuntu-latest
|
||||
if: >
|
||||
contains(github.event.issue.labels.*.name, 'A-DM-Start') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Broadcast')
|
||||
steps:
|
||||
- uses: octokit/graphql-action@v2.x
|
||||
id: add_to_project
|
||||
with:
|
||||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PVT_kwDOAM0swc4AHJKd"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
ps_features3:
|
||||
name: Add labelled issues to PS features team 3
|
||||
runs-on: ubuntu-latest
|
||||
if: >
|
||||
contains(github.event.issue.labels.*.name, 'A-Rich-Text-Editor')
|
||||
steps:
|
||||
- uses: octokit/graphql-action@v2.x
|
||||
id: add_to_project
|
||||
with:
|
||||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PVT_kwDOAM0swc4AHJKW"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
voip:
|
||||
name: Add labelled issues to VoIP project board
|
||||
runs-on: ubuntu-latest
|
||||
if: >
|
||||
contains(github.event.issue.labels.*.name, 'Team: VoIP')
|
||||
steps:
|
||||
- uses: octokit/graphql-action@v2.x
|
||||
id: add_to_project
|
||||
with:
|
||||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PVT_kwDOAM0swc4ABMIk"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
|
|
@ -60,8 +60,8 @@ jobs:
|
|||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!, $contentid:ID!) {
|
||||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
|
||||
projectNextItem {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ jobs:
|
|||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.pull_request.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc0sUA"
|
||||
PROJECT_ID: "PVT_kwDOAM0swc0sUA"
|
||||
TEAM: "design"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
|
@ -129,8 +129,8 @@ jobs:
|
|||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!, $contentid:ID!) {
|
||||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
|
||||
projectNextItem {
|
||||
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||
item {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
@ -138,6 +138,6 @@ jobs:
|
|||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.pull_request.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc4AAg6N"
|
||||
PROJECT_ID: "PVT_kwDOAM0swc4AAg6N"
|
||||
TEAM: "product"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
|
4
.github/workflows/triage-priority-bugs.yml
vendored
4
.github/workflows/triage-priority-bugs.yml
vendored
|
@ -24,7 +24,7 @@ jobs:
|
|||
contains(github.event.issue.labels.*.name, 'A11y') &&
|
||||
contains(github.event.issue.labels.*.name, 'O-Frequent'))
|
||||
steps:
|
||||
- uses: alex-page/github-project-automation-plus@bb266ff4dde9242060e2d5418e120a133586d488
|
||||
- uses: alex-page/github-project-automation-plus@1f8873e97e3c8f58161a323b7c568c1f623a1c4d
|
||||
with:
|
||||
project: Android App Team
|
||||
column: Important Issues & Topics (P1)
|
||||
|
@ -50,7 +50,7 @@ jobs:
|
|||
contains(github.event.issue.labels.*.name, 'A11y') &&
|
||||
contains(github.event.issue.labels.*.name, 'O-Frequent')))
|
||||
steps:
|
||||
- uses: alex-page/github-project-automation-plus@bb266ff4dde9242060e2d5418e120a133586d488
|
||||
- uses: alex-page/github-project-automation-plus@1f8873e97e3c8f58161a323b7c568c1f623a1c4d
|
||||
with:
|
||||
project: Crypto Team
|
||||
column: Ready
|
||||
|
|
2
.github/workflows/triage-unlabelled.yml
vendored
2
.github/workflows/triage-unlabelled.yml
vendored
|
@ -28,7 +28,7 @@ jobs:
|
|||
echo "ALREADY_IN_BOARD=false" >> $GITHUB_ENV
|
||||
fi
|
||||
- name: Move issue
|
||||
uses: alex-page/github-project-automation-plus@bb266ff4dde9242060e2d5418e120a133586d488
|
||||
uses: alex-page/github-project-automation-plus@1f8873e97e3c8f58161a323b7c568c1f623a1c4d
|
||||
if: ${{ env.ALREADY_IN_BOARD == 'true' }}
|
||||
with:
|
||||
project: Issue triage
|
||||
|
|
250
CHANGES.md
250
CHANGES.md
|
@ -1,3 +1,253 @@
|
|||
Changes in Element v1.5.14 (2022-12-20)
|
||||
=======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- ActiveSessionHolder is not supposed to start syncing. Instead, the MainActivity does it, if necessary. Fixes a race condition when clearing cache.
|
||||
|
||||
|
||||
Changes in Element v1.5.13 (2022-12-19)
|
||||
=======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Add `largeHeap=true` in the manifest since we are seeing more crashes (OOM) when handling sync response.
|
||||
|
||||
|
||||
Changes in Element v1.5.12 (2022-12-15)
|
||||
=======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- [Threads] - Threads Labs Flag is enabled by default and forced to be enabled for existing users, but sill can be disabled manually ([#5503](https://github.com/vector-im/element-android/issues/5503))
|
||||
- [Session manager] Add action to signout all the other session ([#7693](https://github.com/vector-im/element-android/issues/7693))
|
||||
- Remind unverified sessions with a banner once a week ([#7694](https://github.com/vector-im/element-android/issues/7694))
|
||||
- [Session manager] Add actions to rename and signout current session ([#7697](https://github.com/vector-im/element-android/issues/7697))
|
||||
- Voice Broadcast - Update last message in the room list ([#7719](https://github.com/vector-im/element-android/issues/7719))
|
||||
- Delete unused client information from account data ([#7754](https://github.com/vector-im/element-android/issues/7754))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fix bad pills color background. For light and dark theme the color is now 61708B (iso EleWeb) ([#7274](https://github.com/vector-im/element-android/issues/7274))
|
||||
- [Notifications] Fixed a bug when push notification was automatically dismissed while app is on background ([#7643](https://github.com/vector-im/element-android/issues/7643))
|
||||
- ANR when asking to select the notification method ([#7653](https://github.com/vector-im/element-android/issues/7653))
|
||||
- [Rich text editor] Fix design and spacing of rich text editor ([#7658](https://github.com/vector-im/element-android/issues/7658))
|
||||
- [Rich text editor] Fix keyboard closing after collapsing editor ([#7659](https://github.com/vector-im/element-android/issues/7659))
|
||||
- Rich Text Editor: fix several issues related to insets:
|
||||
* Empty space displayed at the bottom when you don't have permissions to send messages into a room.
|
||||
* Wrong insets being kept when you exit the room screen and the keyboard is displayed, then come back to it. ([#7680](https://github.com/vector-im/element-android/issues/7680))
|
||||
- Fix crash in message composer when room is missing ([#7683](https://github.com/vector-im/element-android/issues/7683))
|
||||
- Fix crash when invalid homeserver url is entered. ([#7684](https://github.com/vector-im/element-android/issues/7684))
|
||||
- Rich Text Editor: improve performance when entering reply/edit/quote mode. ([#7691](https://github.com/vector-im/element-android/issues/7691))
|
||||
- [Rich text editor] Add error tracking for rich text editor ([#7695](https://github.com/vector-im/element-android/issues/7695))
|
||||
- Fix E2EE set up failure whilst signing in using QR code ([#7699](https://github.com/vector-im/element-android/issues/7699))
|
||||
- Fix usage of unknown shield in room summary ([#7710](https://github.com/vector-im/element-android/issues/7710))
|
||||
- Fix crash when the network is not available. ([#7725](https://github.com/vector-im/element-android/issues/7725))
|
||||
- [Session manager] Sessions without encryption support should not prompt to verify ([#7733](https://github.com/vector-im/element-android/issues/7733))
|
||||
- Fix issue of Scan QR code button sometimes not showing when it should be available ([#7737](https://github.com/vector-im/element-android/issues/7737))
|
||||
- Verification request is not showing when verify session popup is displayed ([#7743](https://github.com/vector-im/element-android/issues/7743))
|
||||
- Fix crash when inviting by email. ([#7744](https://github.com/vector-im/element-android/issues/7744))
|
||||
- Revert usage of stable fields in live location sharing and polls ([#7751](https://github.com/vector-im/element-android/issues/7751))
|
||||
- [Poll] Poll end event is not recognized ([#7753](https://github.com/vector-im/element-android/issues/7753))
|
||||
- [Push Notifications] When push notification for threaded message is clicked, thread timeline will be opened instead of room's main timeline ([#7770](https://github.com/vector-im/element-android/issues/7770))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- [Threads] - added API to fetch threads list from the server instead of building it locally from events ([#5819](https://github.com/vector-im/element-android/issues/5819))
|
||||
- Add Z-Labs label for rich text editor and migrate to new label naming. ([#7477](https://github.com/vector-im/element-android/issues/7477))
|
||||
- Crypto database migration tests ([#7645](https://github.com/vector-im/element-android/issues/7645))
|
||||
- Add tracing Id for to device messages ([#7708](https://github.com/vector-im/element-android/issues/7708))
|
||||
- Disable nightly popup and add an entry point in the advanced settings instead. ([#7723](https://github.com/vector-im/element-android/issues/7723))
|
||||
- Save m.local_notification_settings.<device-id> event in account_data ([#7596](https://github.com/vector-im/element-android/issues/7596))
|
||||
- Update notifications setting when m.local_notification_settings.<device-id> event changes for current device ([#7632](https://github.com/vector-im/element-android/issues/7632))
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- Handle account data removal ([#7740](https://github.com/vector-im/element-android/issues/7740))
|
||||
|
||||
Changes in Element 1.5.11 (2022-12-07)
|
||||
======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fix crash when the network is not available. ([#7725](https://github.com/vector-im/element-android/issues/7725))
|
||||
|
||||
|
||||
Changes in Element v1.5.10 (2022-11-30)
|
||||
=======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- Add setting to allow disabling direct share ([#2725](https://github.com/vector-im/element-android/issues/2725))
|
||||
- [Device Manager] Toggle IP address visibility ([#7546](https://github.com/vector-im/element-android/issues/7546))
|
||||
- New implementation of the full screen mode for the Rich Text Editor. ([#7577](https://github.com/vector-im/element-android/issues/7577))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fix italic text is truncated when bubble mode and markdown is enabled ([#5679](https://github.com/vector-im/element-android/issues/5679))
|
||||
- Missing translations on "replyTo" messages ([#7555](https://github.com/vector-im/element-android/issues/7555))
|
||||
- ANR on session start when sending client info is enabled ([#7604](https://github.com/vector-im/element-android/issues/7604))
|
||||
- Make the plain text mode layout of the RTE more compact. ([#7620](https://github.com/vector-im/element-android/issues/7620))
|
||||
- Push notification for thread message is now shown correctly when user observes rooms main timeline ([#7634](https://github.com/vector-im/element-android/issues/7634))
|
||||
- Voice Broadcast - Fix playback stuck in buffering mode ([#7646](https://github.com/vector-im/element-android/issues/7646))
|
||||
|
||||
In development 🚧
|
||||
----------------
|
||||
- Voice Broadcast - Handle redaction of the state events on the listener and recorder sides ([#7629](https://github.com/vector-im/element-android/issues/7629))
|
||||
- Voice Broadcast - Update the buffering display in the timeline ([#7655](https://github.com/vector-im/element-android/issues/7655))
|
||||
- Voice Broadcast - Remove voice messages related to a VB from the room attachments ([#7656](https://github.com/vector-im/element-android/issues/7656))
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- Added support for read receipts in threads. Now user in a room can have multiple read receipts (one per thread + one in main thread + one without threadId) ([#6996](https://github.com/vector-im/element-android/issues/6996))
|
||||
- Sync Filter now taking in account homeserver capabilities to not pass unsupported parameters.
|
||||
Sync Filter is now configured by providing SyncFilterBuilder class instance, instead of Filter to identify Filter changes related to homeserver capabilities ([#7626](https://github.com/vector-im/element-android/issues/7626))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Remove usage of Buildkite. ([#7583](https://github.com/vector-im/element-android/issues/7583))
|
||||
- Better validation of edits ([#7594](https://github.com/vector-im/element-android/issues/7594))
|
||||
|
||||
|
||||
Changes in Element v1.5.8 (2022-11-17)
|
||||
======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- [Session manager] Multi-session signout ([#7418](https://github.com/vector-im/element-android/issues/7418))
|
||||
- Rich text editor: add full screen mode. ([#7436](https://github.com/vector-im/element-android/issues/7436))
|
||||
- [Rich text editor] Add plain text mode ([#7452](https://github.com/vector-im/element-android/issues/7452))
|
||||
- Move TypingView inside the timeline items. ([#7496](https://github.com/vector-im/element-android/issues/7496))
|
||||
- Push notifications toggle: align implementation for current session ([#7512](https://github.com/vector-im/element-android/issues/7512))
|
||||
- Voice messages - Persist the playback position across different screens ([#7582](https://github.com/vector-im/element-android/issues/7582))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- [Voice Broadcast] Do not display the recorder view for a live broadcast started from another session ([#7431](https://github.com/vector-im/element-android/issues/7431))
|
||||
- [Session manager] Hide push notification toggle when there is no server support ([#7457](https://github.com/vector-im/element-android/issues/7457))
|
||||
- Fix rich text editor textfield not growing to fill parent on full screen. ([#7491](https://github.com/vector-im/element-android/issues/7491))
|
||||
- Fix duplicated mention pills in some cases ([#7501](https://github.com/vector-im/element-android/issues/7501))
|
||||
- Voice Broadcast - Fix duplicated voice messages in the internal playlist ([#7502](https://github.com/vector-im/element-android/issues/7502))
|
||||
- When joining a room, the message composer is displayed once the room is loaded. ([#7509](https://github.com/vector-im/element-android/issues/7509))
|
||||
- Voice Broadcast - Fix error on voice messages in unencrypted rooms ([#7519](https://github.com/vector-im/element-android/issues/7519))
|
||||
- Fix description of verified sessions ([#7533](https://github.com/vector-im/element-android/issues/7533))
|
||||
|
||||
In development 🚧
|
||||
----------------
|
||||
- [Voice Broadcast] Improve timeline items factory and handle bad recording state display ([#7448](https://github.com/vector-im/element-android/issues/7448))
|
||||
- [Voice Broadcast] Stop recording when opening the room after an app restart ([#7450](https://github.com/vector-im/element-android/issues/7450))
|
||||
- [Voice Broadcast] Improve playlist fetching and player codebase ([#7478](https://github.com/vector-im/element-android/issues/7478))
|
||||
- [Voice Broadcast] Display an error dialog if the user fails to start a voice broadcast ([#7485](https://github.com/vector-im/element-android/issues/7485))
|
||||
- [Voice Broadcast] Add seekbar in listening tile ([#7496](https://github.com/vector-im/element-android/issues/7496))
|
||||
- [Voice Broadcast] Improve the live indicator icon rendering in the timeline ([#7579](https://github.com/vector-im/element-android/issues/7579))
|
||||
- Voice Broadcast - Add maximum length ([#7588](https://github.com/vector-im/element-android/issues/7588))
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- [Metrics] Add `SpannableMetricPlugin` to support spans within transactions. ([#7514](https://github.com/vector-im/element-android/issues/7514))
|
||||
- Fix a bug that caused messages with no formatted text to be quoted as "null". ([#7530](https://github.com/vector-im/element-android/issues/7530))
|
||||
- If message content has no `formattedBody`, default to `body` when editing. ([#7574](https://github.com/vector-im/element-android/issues/7574))
|
||||
|
||||
|
||||
Changes in Element v1.5.7 (2022-11-07)
|
||||
======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fix regression when syncing with homeserver < 1.4. ([#7534](https://github.com/vector-im/element-android/issues/7534))
|
||||
|
||||
Changes in Element v1.5.6 (2022-11-02)
|
||||
======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- Add new UI for selecting an attachment ([#7429](https://github.com/vector-im/element-android/issues/7429))
|
||||
- Multi selection in sessions list ([#7396](https://github.com/vector-im/element-android/issues/7396))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- New line and Enter hardware key presses deleting existing text in some keyboards. ([#7357](https://github.com/vector-im/element-android/issues/7357))
|
||||
- Fix share actions using share dialog. ([#7400](https://github.com/vector-im/element-android/issues/7400))
|
||||
- Fix crash by disabling Flipper on Android API 22 and below - only affects debug version of the application. ([#7428](https://github.com/vector-im/element-android/issues/7428))
|
||||
|
||||
In development 🚧
|
||||
----------------
|
||||
- [Voice Broadcast] Live listening support ([#7419](https://github.com/vector-im/element-android/issues/7419))
|
||||
- [Voice Broadcast] Improve rendering in the timeline ([#7421](https://github.com/vector-im/element-android/issues/7421))
|
||||
- Add logic for sign in with QR code ([#7369](https://github.com/vector-im/element-android/issues/7369))
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- Add MetricPlugin interface to implement metrics in SDK clients. ([#7438](https://github.com/vector-im/element-android/issues/7438))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Upgrade Jitsi SDK to 6.2.2 and WebRtc to 1.106.1-jitsi-12039821. ([#6195](https://github.com/vector-im/element-android/issues/6195))
|
||||
- Gets thread notifications from sync response ([#7424](https://github.com/vector-im/element-android/issues/7424))
|
||||
- Replace org.apache.sanselan:sanselan by org.apache.commons:commons-imaging ([#7454](https://github.com/vector-im/element-android/issues/7454))
|
||||
|
||||
|
||||
Changes in Element v1.5.4 (2022-10-19)
|
||||
======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- Add WYSIWYG editor, under a lab flag. ([#7288](https://github.com/vector-im/element-android/issues/7288))
|
||||
- New Device management, can be enabled in the labs settings.
|
||||
- Voice broadcast can be enabled in the labs settings (recording is possible only on Android 10 and up).
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fix wrong mic button direction to cancel on RTL languages ([#5968](https://github.com/vector-im/element-android/issues/5968))
|
||||
- Handle properly when getUser returns null - prefer using getUserOrDefault ([#7372](https://github.com/vector-im/element-android/issues/7372))
|
||||
- [Device Management] Long session names not handled well ([#7310](https://github.com/vector-im/element-android/issues/7310))
|
||||
- Fix editing formatted messages with plain text editor ([#7359](https://github.com/vector-im/element-android/issues/7359))
|
||||
|
||||
In development 🚧
|
||||
----------------
|
||||
- [Device Management] Save "matrix_client_information" events on login/registration ([#7257](https://github.com/vector-im/element-android/issues/7257))
|
||||
- [Device management] Add lab flag for the feature ([#7336](https://github.com/vector-im/element-android/issues/7336))
|
||||
- [Device management] Add lab flag for matrix client info account data event ([#7344](https://github.com/vector-im/element-android/issues/7344))
|
||||
- [Device Management] Redirect to the new screen everywhere when lab flag is on ([#7374](https://github.com/vector-im/element-android/issues/7374))
|
||||
- [Device Management] Show correct device type icons ([#7277](https://github.com/vector-im/element-android/issues/7277))
|
||||
- [Device Management] Render extended device info ([#7294](https://github.com/vector-im/element-android/issues/7294))
|
||||
- [Device management] Improve the parsing for OS of Desktop/Web sessions ([#7321](https://github.com/vector-im/element-android/issues/7321))
|
||||
- [Device management] Hide the IP address and last activity date on current session ([#7324](https://github.com/vector-im/element-android/issues/7324))
|
||||
- [Device management] Update the unknown verification status icon ([#7327](https://github.com/vector-im/element-android/issues/7327))
|
||||
- [Voice Broadcast] Add the "io.element.voice_broadcast_info" state event with a minimalist timeline widget ([#7273](https://github.com/vector-im/element-android/issues/7273))
|
||||
- [Voice Broadcast] Aggregate state events in the timeline ([#7283](https://github.com/vector-im/element-android/issues/7283))
|
||||
- [Voice Broadcast] Record and send non aggregated voice messages to the room ([#7363](https://github.com/vector-im/element-android/issues/7363))
|
||||
- [Voice Broadcast] Start listening to a voice broadcast ([#7387](https://github.com/vector-im/element-android/issues/7387))
|
||||
- [Voice Broadcast] Enable the feature (behind a lab flag and only for Android 10 and up) ([#7393](https://github.com/vector-im/element-android/issues/7393))
|
||||
- [Voice Broadcast] Add additional data in events ([#7397](https://github.com/vector-im/element-android/issues/7397))
|
||||
- Implements MSC3881: Parses `enabled` and `device_id` fields from updated Pusher API ([#7217](https://github.com/vector-im/element-android/issues/7217))
|
||||
- Adds pusher toggle setting to device manager v2 ([#7261](https://github.com/vector-im/element-android/issues/7261))
|
||||
- Implement QR Code Login UI ([#7338](https://github.com/vector-im/element-android/issues/7338))
|
||||
- Implements client-side of local notification settings event ([#7300](https://github.com/vector-im/element-android/issues/7300))
|
||||
- Links "Enable Notifications for this session" setting to enabled value in pusher ([#7281](https://github.com/vector-im/element-android/issues/7281))
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- Stop using `original_event` field from `/relations` endpoint ([#7282](https://github.com/vector-im/element-android/issues/7282))
|
||||
- Add `formattedText` or similar optional parameters in several methods:
|
||||
* RelationService:
|
||||
* editTextMessage
|
||||
* editReply
|
||||
* replyToMessage
|
||||
* SendService:
|
||||
* sendQuotedTextMessage
|
||||
This allows us to send any HTML formatted text message without needing to rely on automatic Markdown > HTML translation. All these new parameters have a `null` value by default, so previous calls to these API methods remain compatible. ([#7288](https://github.com/vector-im/element-android/issues/7288))
|
||||
- Add support for `m.login.token` auth during QR code based sign in ([#7358](https://github.com/vector-im/element-android/issues/7358))
|
||||
- Allow getting the formatted or plain text body of a message for the fun `TimelineEvent.getTextEditableContent()`. ([#7359](https://github.com/vector-im/element-android/issues/7359))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Refactor TimelineFragment, split it into MessageComposerFragment and VoiceRecorderFragment. ([#7285](https://github.com/vector-im/element-android/issues/7285))
|
||||
- Dependency to arrow has been removed. Please use `org.matrix.android.sdk.api.util.Optional` instead. ([#7335](https://github.com/vector-im/element-android/issues/7335))
|
||||
- Update WYSIWYG editor designs. ([#7354](https://github.com/vector-im/element-android/issues/7354))
|
||||
- Update WYSIWYG library to v0.2.1. ([#7384](https://github.com/vector-im/element-android/issues/7384))
|
||||
|
||||
|
||||
Changes in Element v1.5.2 (2022-10-05)
|
||||
======================================
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
* [Code quality](#code-quality)
|
||||
* [Internal tool](#internal-tool)
|
||||
* [ktlint](#ktlint)
|
||||
* [knit](#knit)
|
||||
* [lint](#lint)
|
||||
* [Unit tests](#unit-tests)
|
||||
* [Tests](#tests)
|
||||
|
@ -126,6 +127,23 @@ Note that you can run
|
|||
|
||||
For ktlint to fix some detected errors for you (you still have to check and commit the fix of course)
|
||||
|
||||
#### knit
|
||||
|
||||
[knit](https://github.com/Kotlin/kotlinx-knit) is a tool which checks markdown files on the project. Also it generates/updates the table of content (toc) of the markdown files.
|
||||
|
||||
So everytime the toc should be updated, just run
|
||||
<pre>
|
||||
./gradlew knit
|
||||
</pre>
|
||||
|
||||
and commit the changes.
|
||||
|
||||
The CI will check that markdown files are up to date by running
|
||||
|
||||
<pre>
|
||||
./gradlew knitCheck
|
||||
</pre>
|
||||
|
||||
#### lint
|
||||
|
||||
<pre>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[![Buildkite](https://badge.buildkite.com/ad0065c1b70f557cd3b1d3d68f9c2154010f83c4d6f71706a9.svg?branch=develop)](https://buildkite.com/matrix-dot-org/element-android/builds?branch=develop)
|
||||
[![Latest build](https://github.com/vector-im/element-android/actions/workflows/build.yml/badge.svg?query=branch%3Adevelop)](https://github.com/vector-im/element-android/actions/workflows/build.yml?query=branch%3Adevelop)
|
||||
[![Weblate](https://translate.element.io/widgets/element-android/-/svg-badge.svg)](https://translate.element.io/engage/element-android/?utm_source=widget)
|
||||
[![Element Android Matrix room #element-android:matrix.org](https://img.shields.io/matrix/element-android:matrix.org.svg?label=%23element-android:matrix.org&logo=matrix&server_fqdn=matrix.org)](https://matrix.to/#/#element-android:matrix.org)
|
||||
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=vector-im_element-android&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=vector-im_element-android)
|
||||
|
@ -14,7 +14,7 @@ It is a total rewrite of [Riot-Android](https://github.com/vector-im/riot-androi
|
|||
[<img src="resources/img/google-play-badge.png" alt="Get it on Google Play" height="60">](https://play.google.com/store/apps/details?id=im.vector.app)
|
||||
[<img src="resources/img/f-droid-badge.png" alt="Get it on F-Droid" height="60">](https://f-droid.org/app/im.vector.app)
|
||||
|
||||
Nightly build: [![Buildkite](https://badge.buildkite.com/ad0065c1b70f557cd3b1d3d68f9c2154010f83c4d6f71706a9.svg?branch=develop)](https://buildkite.com/matrix-dot-org/element-android/builds?branch=develop) Nightly test status: [![allScreensTest](https://github.com/vector-im/element-android/actions/workflows/nightly.yml/badge.svg)](https://github.com/vector-im/element-android/actions/workflows/nightly.yml)
|
||||
Build of develop branch: [![GitHub Action](https://github.com/vector-im/element-android/actions/workflows/build.yml/badge.svg?query=branch%3Adevelop)](https://github.com/vector-im/element-android/actions/workflows/build.yml?query=branch%3Adevelop) Nightly test status: [![allScreensTest](https://github.com/vector-im/element-android/actions/workflows/nightly.yml/badge.svg)](https://github.com/vector-im/element-android/actions/workflows/nightly.yml)
|
||||
|
||||
|
||||
# New Android SDK
|
||||
|
@ -40,7 +40,7 @@ If you would like to receive releases more quickly (bearing in mind that they ma
|
|||
|
||||
1. [Sign up to receive beta releases](https://play.google.com/apps/testing/im.vector.app) via the Google Play Store.
|
||||
2. Install a [release APK](https://github.com/vector-im/element-android/releases) directly - download the relevant .apk file and allow installing from untrusted sources in your device settings. Note: these releases are the Google Play version, which depend on some Google services. If you prefer to avoid that, try the latest dev builds, and choose the F-Droid version.
|
||||
3. If you're really brave, install the [very latest dev build](https://buildkite.com/matrix-dot-org/element-android/builds/latest?branch=develop&state=passed) - click on *Assemble (GPlay or FDroid) Debug version* then on *Artifacts*.
|
||||
3. If you're really brave, install the [very latest dev build](https://github.com/vector-im/element-android/actions/workflows/build.yml?query=branch%3Adevelop) - pick a build, then click on `Summary` to download the APKs from there: `vector-Fdroid-debug` and `vector-Gplay-debug` contains the APK for the desired store. Each file contains 5 APKs. 4 APKs for every supported specific architecture of device. In doubt you can install the `universal` APK.
|
||||
|
||||
## Contributing
|
||||
|
||||
|
|
20
build.gradle
20
build.gradle
|
@ -24,16 +24,16 @@ buildscript {
|
|||
classpath libs.gradle.gradlePlugin
|
||||
classpath libs.gradle.kotlinPlugin
|
||||
classpath libs.gradle.hiltPlugin
|
||||
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.0.3'
|
||||
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.1.1'
|
||||
classpath 'com.google.gms:google-services:4.3.14'
|
||||
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.4.0.2513'
|
||||
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.5.0.2730'
|
||||
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.5'
|
||||
classpath "com.likethesalad.android:stem-plugin:2.2.3"
|
||||
classpath 'org.owasp:dependency-check-gradle:7.2.1'
|
||||
classpath 'org.owasp:dependency-check-gradle:7.4.1'
|
||||
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.7.20"
|
||||
classpath "org.jetbrains.kotlinx:kotlinx-knit:0.4.0"
|
||||
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3'
|
||||
classpath 'app.cash.paparazzi:paparazzi-gradle-plugin:1.1.0'
|
||||
classpath libs.squareup.paparazziPlugin
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
|
@ -43,12 +43,12 @@ plugins {
|
|||
// ktlint Plugin
|
||||
id "org.jlleitschuh.gradle.ktlint" version "11.0.0"
|
||||
// Detekt
|
||||
id "io.gitlab.arturbosch.detekt" version "1.21.0"
|
||||
id "io.gitlab.arturbosch.detekt" version "1.22.0"
|
||||
// Ksp
|
||||
id "com.google.devtools.ksp" version "1.7.20-1.0.6"
|
||||
id "com.google.devtools.ksp" version "1.7.22-1.0.8"
|
||||
|
||||
// Dependency Analysis
|
||||
id 'com.autonomousapps.dependency-analysis' version "1.13.1"
|
||||
id 'com.autonomousapps.dependency-analysis' version "1.17.0"
|
||||
// Gradle doctor
|
||||
id "com.osacky.doctor" version "0.8.1"
|
||||
}
|
||||
|
@ -96,9 +96,9 @@ allprojects {
|
|||
}
|
||||
// Jitsi repo
|
||||
maven {
|
||||
url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-5.0.2"
|
||||
url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-6.2.2"
|
||||
// Note: to test Jitsi release you can use a local file like this:
|
||||
// url "file:///Users/bmarty/workspaces/jitsi_libre_maven/android-sdk-3.10.0"
|
||||
// url "file:///Users/bmarty/workspaces/jitsi_libre_maven/android-sdk-6.2.2"
|
||||
content {
|
||||
groups.jitsi.regex.each { includeGroupByRegex it }
|
||||
groups.jitsi.group.each { includeGroup it }
|
||||
|
@ -322,7 +322,7 @@ ext.initScreenshotTests = { project ->
|
|||
if (hasScreenshots) {
|
||||
project.apply plugin: 'app.cash.paparazzi'
|
||||
}
|
||||
project.dependencies { testCompileOnly "app.cash.paparazzi:paparazzi:1.0.0" }
|
||||
project.dependencies { testCompileOnly libs.squareup.paparazzi }
|
||||
project.android.testOptions.unitTests.all {
|
||||
def screenshotTestCapture = "**/*ScreenshotTest*"
|
||||
if (hasScreenshots) {
|
||||
|
|
1
changelog.d/2965.bugfix
Normal file
1
changelog.d/2965.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Do not show typing notification of ignored users.
|
|
@ -1 +0,0 @@
|
|||
Fix wrong mic button direction to cancel on RTL languages
|
|
@ -1 +0,0 @@
|
|||
Implements MSC3881: Parses `enabled` and `device_id` fields from updated Pusher API
|
|
@ -1 +0,0 @@
|
|||
[Device Management] Save "matrix_client_information" events on login/registration
|
|
@ -1 +0,0 @@
|
|||
Adds pusher toggle setting to device manager v2
|
|
@ -1 +0,0 @@
|
|||
[Voice Broadcast] Add the "io.element.voice_broadcast_info" state event with a minimalist timeline widget
|
|
@ -1 +0,0 @@
|
|||
[Device Management] Show correct device type icons
|
|
@ -1 +0,0 @@
|
|||
Links "Enable Notifications for this session" setting to enabled value in pusher
|
|
@ -1 +0,0 @@
|
|||
Stop using `original_event` field from `/relations` endpoint
|
|
@ -1 +0,0 @@
|
|||
[Voice Broadcast] Aggregate state events in the timeline
|
|
@ -1 +0,0 @@
|
|||
Refactor TimelineFragment, split it into MessageComposerFragment and VoiceRecorderFragment.
|
|
@ -1 +0,0 @@
|
|||
Add WYSIWYG editor.
|
|
@ -1,10 +0,0 @@
|
|||
Add `formattedText` or similar optional parameters in several methods:
|
||||
|
||||
* RelationService:
|
||||
* editTextMessage
|
||||
* editReply
|
||||
* replyToMessage
|
||||
* SendService:
|
||||
* sendQuotedTextMessage
|
||||
|
||||
This allows us to send any HTML formatted text message without needing to rely on automatic Markdown > HTML translation. All these new parameters have a `null` value by default, so previous calls to these API methods remain compatible.
|
|
@ -1 +0,0 @@
|
|||
[Device Management] Render extended device info
|
|
@ -1 +0,0 @@
|
|||
Implements client-side of local notification settings event
|
|
@ -1 +0,0 @@
|
|||
[Device Management] Long session names not handled well
|
|
@ -1 +0,0 @@
|
|||
[Device management] Improve the parsing for OS of Desktop/Web sessions
|
|
@ -1 +0,0 @@
|
|||
[Device management] Hide the IP address and last activity date on current session
|
|
@ -1 +0,0 @@
|
|||
[Device management] Update the unknown verification status icon
|
|
@ -1 +0,0 @@
|
|||
Dependency to arrow has been removed. Please use `org.matrix.android.sdk.api.util.Optional` instead.
|
|
@ -1 +0,0 @@
|
|||
[Device management] Add lab flag for the feature
|
|
@ -1 +0,0 @@
|
|||
Implement QR Code Login UI
|
|
@ -1 +0,0 @@
|
|||
[Device management] Add lab flag for matrix client info account data event
|
|
@ -1 +0,0 @@
|
|||
Update WYSIWYG editor designs.
|
|
@ -1 +0,0 @@
|
|||
Add support for `m.login.token` auth during QR code based sign in
|
|
@ -1 +0,0 @@
|
|||
Fix editing formatted messages with plain text editor
|
|
@ -1 +0,0 @@
|
|||
Allow getting the formatted or plain text body of a message for the fun `TimelineEvent.getTextEditableContent()`.
|
|
@ -1 +0,0 @@
|
|||
[Device Management] Redirect to the new screen everywhere when lab flag is on
|
1
changelog.d/7475.bugfix
Normal file
1
changelog.d/7475.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
[Push Notifications, Threads] - quick reply to threaded notification now sent to thread except main timeline
|
1
changelog.d/7746.feature
Normal file
1
changelog.d/7746.feature
Normal file
|
@ -0,0 +1 @@
|
|||
[Rich text editor] Add support for links
|
1
changelog.d/7767.feature
Normal file
1
changelog.d/7767.feature
Normal file
|
@ -0,0 +1 @@
|
|||
[Poll] When a poll is ended, use /relations API to ensure poll results are correct
|
1
changelog.d/7784.bugfix
Normal file
1
changelog.d/7784.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
[Session manager] Other sessions list: filter option is displayed when selection mode is enabled
|
1
changelog.d/7786.bugfix
Normal file
1
changelog.d/7786.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
[Session manager] Other sessions: Filter bottom sheet cut in landscape mode
|
1
changelog.d/7790.bugfix
Normal file
1
changelog.d/7790.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Automatically show keyboard after learn more bottom sheet is dismissed
|
1
changelog.d/7792.bugfix
Normal file
1
changelog.d/7792.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
[Session Manager] Other sessions list: cannot select/deselect session by a long press when in select mode
|
1
changelog.d/7794.bugfix
Normal file
1
changelog.d/7794.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix current session ip address visibility
|
1
changelog.d/7795.feature
Normal file
1
changelog.d/7795.feature
Normal file
|
@ -0,0 +1 @@
|
|||
[Session manager] Security recommendations cards: whole view should be tappable
|
1
changelog.d/7797.feature
Normal file
1
changelog.d/7797.feature
Normal file
|
@ -0,0 +1 @@
|
|||
[Session manager] Other sessions list: header should not be sticky
|
1
changelog.d/7798.bugfix
Normal file
1
changelog.d/7798.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Device Manager UI review fixes
|
1
changelog.d/7821.misc
Normal file
1
changelog.d/7821.misc
Normal file
|
@ -0,0 +1 @@
|
|||
[Voice Broadcast] Replace the player timeline
|
|
@ -1,5 +1,4 @@
|
|||
ext.versions = [
|
||||
|
||||
'minSdk' : 21,
|
||||
'compileSdk' : 33,
|
||||
'targetSdk' : 33,
|
||||
|
@ -9,16 +8,16 @@ ext.versions = [
|
|||
|
||||
def gradle = "7.3.1"
|
||||
// Ref: https://kotlinlang.org/releases.html
|
||||
def kotlin = "1.7.20"
|
||||
def kotlin = "1.7.22"
|
||||
def kotlinCoroutines = "1.6.4"
|
||||
def dagger = "2.44"
|
||||
def appDistribution = "16.0.0-beta04"
|
||||
def dagger = "2.44.2"
|
||||
def appDistribution = "16.0.0-beta05"
|
||||
def retrofit = "2.9.0"
|
||||
def markwon = "4.6.2"
|
||||
def moshi = "1.14.0"
|
||||
def lifecycle = "2.5.1"
|
||||
def flowBinding = "1.2.0"
|
||||
def flipper = "0.170.0"
|
||||
def flipper = "0.176.0"
|
||||
def epoxy = "5.0.0"
|
||||
def mavericks = "3.0.1"
|
||||
def glide = "4.14.2"
|
||||
|
@ -27,22 +26,20 @@ def jjwt = "0.11.5"
|
|||
// Temporary version to unblock #6929. Once 0.16.0 is released we should use it, and revert
|
||||
// the whole commit which set version 0.16.0-SNAPSHOT
|
||||
def vanniktechEmoji = "0.16.0-SNAPSHOT"
|
||||
|
||||
def sentry = "6.4.3"
|
||||
|
||||
def fragment = "1.5.3"
|
||||
|
||||
def sentry = "6.9.2"
|
||||
def fragment = "1.5.5"
|
||||
// Testing
|
||||
def mockk = "1.12.3" // We need to use 1.12.3 to have mocking in androidTest until a new version is released: https://github.com/mockk/mockk/issues/819
|
||||
def espresso = "3.4.0"
|
||||
def androidxTest = "1.4.0"
|
||||
def androidxOrchestrator = "1.4.1"
|
||||
def androidxOrchestrator = "1.4.2"
|
||||
def paparazzi = "1.1.0"
|
||||
|
||||
ext.libs = [
|
||||
gradle : [
|
||||
'gradlePlugin' : "com.android.tools.build:gradle:$gradle",
|
||||
'kotlinPlugin' : "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin",
|
||||
'hiltPlugin' : "com.google.dagger:hilt-android-gradle-plugin:$dagger"
|
||||
|
||||
],
|
||||
jetbrains : [
|
||||
'coroutinesCore' : "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinCoroutines",
|
||||
|
@ -50,12 +47,12 @@ ext.libs = [
|
|||
'coroutinesTest' : "org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinCoroutines"
|
||||
],
|
||||
androidx : [
|
||||
'activity' : "androidx.activity:activity-ktx:1.6.0",
|
||||
'activity' : "androidx.activity:activity-ktx:1.6.1",
|
||||
'appCompat' : "androidx.appcompat:appcompat:1.5.1",
|
||||
'biometric' : "androidx.biometric:biometric:1.1.0",
|
||||
'core' : "androidx.core:core-ktx:1.9.0",
|
||||
'recyclerview' : "androidx.recyclerview:recyclerview:1.2.1",
|
||||
'exifinterface' : "androidx.exifinterface:exifinterface:1.3.4",
|
||||
'exifinterface' : "androidx.exifinterface:exifinterface:1.3.5",
|
||||
'fragmentKtx' : "androidx.fragment:fragment-ktx:$fragment",
|
||||
'fragmentTesting' : "androidx.fragment:fragment-testing:$fragment",
|
||||
'constraintLayout' : "androidx.constraintlayout:constraintlayout:2.1.4",
|
||||
|
@ -82,11 +79,11 @@ ext.libs = [
|
|||
'transition' : "androidx.transition:transition:1.2.0",
|
||||
],
|
||||
google : [
|
||||
'material' : "com.google.android.material:material:1.6.1",
|
||||
'material' : "com.google.android.material:material:1.7.0",
|
||||
'appdistributionApi' : "com.google.firebase:firebase-appdistribution-api-ktx:$appDistribution",
|
||||
'appdistribution' : "com.google.firebase:firebase-appdistribution:$appDistribution",
|
||||
// Phone number https://github.com/google/libphonenumber
|
||||
'phonenumber' : "com.googlecode.libphonenumber:libphonenumber:8.12.57"
|
||||
'phonenumber' : "com.googlecode.libphonenumber:libphonenumber:8.13.3"
|
||||
],
|
||||
dagger : [
|
||||
'dagger' : "com.google.dagger:dagger:$dagger",
|
||||
|
@ -101,13 +98,15 @@ ext.libs = [
|
|||
],
|
||||
element : [
|
||||
'opusencoder' : "io.element.android:opusencoder:1.1.0",
|
||||
'wysiwyg' : "io.element.android:wysiwyg:0.1.0"
|
||||
'wysiwyg' : "io.element.android:wysiwyg:0.10.0"
|
||||
],
|
||||
squareup : [
|
||||
'moshi' : "com.squareup.moshi:moshi:$moshi",
|
||||
'moshiKt' : "com.squareup.moshi:moshi-kotlin:$moshi",
|
||||
'moshiKotlin' : "com.squareup.moshi:moshi-kotlin-codegen:$moshi",
|
||||
'moshiAdapters' : "com.squareup.moshi:moshi-adapters:$moshi",
|
||||
'paparazzi' : "app.cash.paparazzi:paparazzi:$paparazzi",
|
||||
'paparazziPlugin' : "app.cash.paparazzi:paparazzi-gradle-plugin:$paparazzi",
|
||||
'retrofit' : "com.squareup.retrofit2:retrofit:$retrofit",
|
||||
'retrofitMoshi' : "com.squareup.retrofit2:converter-moshi:$retrofit"
|
||||
],
|
||||
|
@ -130,7 +129,7 @@ ext.libs = [
|
|||
'mavericksTesting' : "com.airbnb.android:mavericks-testing:$mavericks"
|
||||
],
|
||||
maplibre : [
|
||||
'androidSdk' : "org.maplibre.gl:android-sdk:9.5.2",
|
||||
'androidSdk' : "org.maplibre.gl:android-sdk:9.6.0",
|
||||
'pluginAnnotation' : "org.maplibre.gl:android-plugin-annotation-v9:1.0.0"
|
||||
],
|
||||
mockk : [
|
||||
|
@ -161,13 +160,13 @@ ext.libs = [
|
|||
'emojiGoogle' : "com.vanniktech:emoji-google:$vanniktechEmoji"
|
||||
],
|
||||
apache : [
|
||||
'commonsImaging' : "org.apache.sanselan:sanselan:0.97-incubator"
|
||||
'commonsImaging' : "org.apache.commons:commons-imaging:1.0-alpha3"
|
||||
],
|
||||
sentry: [
|
||||
'sentryAndroid' : "io.sentry:sentry-android:$sentry"
|
||||
],
|
||||
tests : [
|
||||
'kluent' : "org.amshove.kluent:kluent-android:1.68",
|
||||
'kluent' : "org.amshove.kluent:kluent-android:1.72",
|
||||
'timberJunitRule' : "net.lachlanmckee:timber-junit-rule:1.0.1",
|
||||
'junit' : "junit:junit:4.13.2",
|
||||
]
|
||||
|
|
|
@ -176,7 +176,6 @@ ext.groups = [
|
|||
'org.apache.ant',
|
||||
'org.apache.commons',
|
||||
'org.apache.httpcomponents',
|
||||
'org.apache.sanselan',
|
||||
'org.bouncycastle',
|
||||
'org.ccil.cowan.tagsoup',
|
||||
'org.checkerframework',
|
||||
|
|
55
docs/database_migration_test.md
Normal file
55
docs/database_migration_test.md
Normal file
|
@ -0,0 +1,55 @@
|
|||
<!--- TOC -->
|
||||
|
||||
* [Testing database migration](#testing-database-migration)
|
||||
* [Creating a reference database](#creating-a-reference-database)
|
||||
* [Testing](#testing)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
## Testing database migration
|
||||
|
||||
### Creating a reference database
|
||||
|
||||
Databases are encrypted, the key to decrypt is needed to setup the test.
|
||||
A special build property must be enabled to extract it.
|
||||
|
||||
Set `vector.debugPrivateData=true` in `~/.gradle/gradle.properties` (to avoid committing by mistake)
|
||||
|
||||
Launch the app in your emulator, login and use the app to fill up the database.
|
||||
|
||||
Save the key for the tested database
|
||||
```
|
||||
RealmKeysUtils W Database key for alias `session_db_fe9f212a611ccf6dea1141777065ed0a`: 935a6dfa0b0fc5cce1414194ed190....
|
||||
RealmKeysUtils W Database key for alias `crypto_module_fe9f212a611ccf6dea1141777065ed0a`: 7b9a21a8a311e85d75b069a343.....
|
||||
```
|
||||
|
||||
|
||||
Use the [Device File Explorer](https://developer.android.com/studio/debug/device-file-explorer) to extrat the database file from the emulator.
|
||||
|
||||
Go to `data/data/im.vector.app.debug/files/<hash>/`
|
||||
Pick the database you want to test (name can be found in SessionRealmConfigurationFactory):
|
||||
- crypto_store.realm for crypto
|
||||
- disk_store.realm for session
|
||||
- etc...
|
||||
|
||||
Download the file on your disk
|
||||
|
||||
### Testing
|
||||
|
||||
Copy the file in `src/AndroidTest/assets`
|
||||
|
||||
see `CryptoSanityMigrationTest` or `RealmSessionStoreMigration43Test` for sample tests.
|
||||
|
||||
There are already some databases in the assets folder.
|
||||
The existing test will properly detect schema changes, and fail with such errors if a migration is missing:
|
||||
|
||||
```
|
||||
io.realm.exceptions.RealmMigrationNeededException: Migration is required due to the following errors:
|
||||
- Property 'CryptoMetadataEntity.foo' has been added.
|
||||
```
|
||||
|
||||
If you want to test properly more complex database migration (dynamic transforms) ensure that the database contains
|
||||
the entity you want to migrate.
|
||||
|
||||
You can explore the database with [realm studio](https://www.mongodb.com/docs/realm/studio/) if needed.
|
||||
|
52
docs/installing_from_ci.md
Normal file
52
docs/installing_from_ci.md
Normal file
|
@ -0,0 +1,52 @@
|
|||
## Installing from CI
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Installing from Buildkite](#installing-from-buildkite)
|
||||
* [Installing from GitHub](#installing-from-github)
|
||||
* [Create a GitHub token](#create-a-github-token)
|
||||
* [Provide artifact URL](#provide-artifact-url)
|
||||
* [Next steps](#next-steps)
|
||||
* [Future improvement](#future-improvement)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
Installing APK build by the CI is possible
|
||||
|
||||
### Installing from Buildkite
|
||||
|
||||
The script `./tools/install/installFromBuildkite.sh` can be used, but Builkite will be removed soon. See next section.
|
||||
|
||||
### Installing from GitHub
|
||||
|
||||
To install an APK built by a GitHub action, run the script `./tools/install/installFromGitHub.sh`. You will need to pass a GitHub token to do so.
|
||||
|
||||
#### Create a GitHub token
|
||||
|
||||
You can create a GitHub token going to your Github account, at this page: [https://github.com/settings/tokens](https://github.com/settings/tokens).
|
||||
|
||||
You need to create a token (classic) with the scope `repo/public_repo`. So just check the corresponding checkbox.
|
||||
Validity can be long since the scope of this token is limited. You will still be able to delete the token and generate a new one.
|
||||
Click on Generate token and save the token locally.
|
||||
|
||||
### Provide artifact URL
|
||||
|
||||
The script will ask for an artifact URL. You can get this artifact URL by following these steps:
|
||||
|
||||
- open the pull request
|
||||
- in the check at the bottom, click on `APK Build / Build debug APKs`
|
||||
- click on `Summary`
|
||||
- scroll to the bottom of the page
|
||||
- copy the link `vector-Fdroid-debug` if you want the F-Droid variant or `vector-Gplay-debug` if you want the Gplay variant.
|
||||
|
||||
The copied link can be provided to the script.
|
||||
|
||||
### Next steps
|
||||
|
||||
The script will download the artifact, unzip it and install the correct version (regarding arch) on your device.
|
||||
|
||||
Files will be added to the folder `./tmp/DebugApks`. Feel free to cleanup this folder from time to time, the script will not delete files.
|
||||
|
||||
### Future improvement
|
||||
|
||||
The script could ask the user for a Pull Request number and Gplay/Fdroid choice like it was done with Buildkite script. Using GitHub API may be possible to do that.
|
|
@ -93,4 +93,4 @@ url "https://github.com/vector-im/jitsi_libre_maven/raw/master/android-sdk-3.10.
|
|||
|
||||
- Build the project and perform the sanity tests again.
|
||||
|
||||
- Update the file `/CHANGES.md` to notify about the library upgrade, and create a regular PR for project Element Android.
|
||||
- Create a PR for project Element Android and add a changelog file `<PR_NUMBER>.misc` to notify about the library upgrade.
|
||||
|
|
1
fastlane/metadata/android/az/short_description.txt
Normal file
1
fastlane/metadata/android/az/short_description.txt
Normal file
|
@ -0,0 +1 @@
|
|||
Qrup mesajlaşma - şifrəli mesajlaşma, qrup söhbəti və video zənglər
|
1
fastlane/metadata/android/az/title.txt
Normal file
1
fastlane/metadata/android/az/title.txt
Normal file
|
@ -0,0 +1 @@
|
|||
Element - Təhlükəsiz Mesajlaşma
|
2
fastlane/metadata/android/cs-CZ/changelogs/40105040.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40105040.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Hlavní změny v této verzi: Nové funkce v Experimentálních funkcích: Rozšířený editor zpráv, nová správa zařízení, hlasové vysílání. Stále v aktivním vývoji!
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40105060.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40105060.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Hlavní změny v této verzi: nové uživatelské rozhraní pro výběr přílohy.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40105070.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40105070.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Hlavní změny v této verzi: nové uživatelské rozhraní pro výběr přílohy.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40105080.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40105080.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Hlavní změny v této verzi: opravy různých chyb a vylepšení.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40105100.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40105100.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Hlavní změny v této verzi: Nová implementace celoobrazovkového režimu pro editor formátovaného textu a opravy chyb.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
|
@ -1,2 +1,2 @@
|
|||
Die wichtigste Änderung in dieser Version: Verzögerte Direktnachrichten standardmäßig aktiviert!
|
||||
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases/tag/v1.2.0
|
||||
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
Die wichtigste Änderung in dieser Version: Neues App-Layout standardmäßig aktiviert!
|
||||
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases/tag/v1.2.0
|
||||
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases
|
||||
|
|
2
fastlane/metadata/android/de-DE/changelogs/40105040.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40105040.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Die wichtigste Änderung in dieser Version: Neue Funktionen in den Labor-Einstellungen: Textverarbeitungs-Editor, neue Geräteverwaltung, Sprachübertragung. Noch in aktiver Entwicklung!
|
||||
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/de-DE/changelogs/40105060.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40105060.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Die wichtigste Änderung in dieser Version: Neues Anhangauswahl-UI.
|
||||
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/de-DE/changelogs/40105070.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40105070.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Die wichtigste Änderung in dieser Version: Neue Anhangauswahl-Oberfläche.
|
||||
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/de-DE/changelogs/40105080.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40105080.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Die wichtigsten Änderungen in dieser Version: Fehlerbehebungen und Verbesserungen.
|
||||
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/de-DE/changelogs/40105100.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40105100.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Die wichtigsten Änderungen in dieser Version: Der Vollbildmodus des Textverarbeitungseditors wurde neu umgesetzt und es wurden diverse Fehler behoben.
|
||||
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40105040.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40105040.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Main changes in this version: New features under the labs settings: Rich text composer, new device management, voice broadcast. Still under active development!
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40105060.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40105060.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Main changes in this version: new UI for selecting an attachment.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40105070.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40105070.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Main changes in this version: new UI for selecting an attachment.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40105080.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40105080.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Main changes in this version: bug fixes and improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40105100.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40105100.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Main changes in this version: New implementation of the full screen mode for the Rich Text Editor and bugfixes.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40105110.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40105110.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Main changes in this version: New implementation of the full screen mode for the Rich Text Editor and bugfixes.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40105120.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40105120.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Main changes in this version: Thread are now enabled by default.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40105130.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40105130.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Main changes in this version: Thread are now enabled by default.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40105140.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40105140.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Main changes in this version: Thread are now enabled by default.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/et/changelogs/40105040.txt
Normal file
2
fastlane/metadata/android/et/changelogs/40105040.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Põhilised muutused selles versioonis: Uued võimalused katsete all: vormindatud teksti põhine toimeti, uus seadmehaldus, ringhäälingukõned (kõik on hetkel aktiivsel arendamisel).
|
||||
Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/et/changelogs/40105060.txt
Normal file
2
fastlane/metadata/android/et/changelogs/40105060.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Põhilised muutused selles versioonis: uus liides manuste lisamiseks.
|
||||
Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/et/changelogs/40105070.txt
Normal file
2
fastlane/metadata/android/et/changelogs/40105070.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Põhilised muutused selles versioonis: uus liides manuste valimiseks.
|
||||
Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/et/changelogs/40105080.txt
Normal file
2
fastlane/metadata/android/et/changelogs/40105080.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Põhilised muutused selles versioonis: erinevate vigade parandused ja kohendused.
|
||||
Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/et/changelogs/40105100.txt
Normal file
2
fastlane/metadata/android/et/changelogs/40105100.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Põhilised muutused selles versioonis: tekstitoimeti täisekraanivaade ja erinevate vigade parandused.
|
||||
Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/fa/changelogs/40105040.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40105040.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
تغییرات اصلی در این نگارش: قابلیتهای جدید در تنظیمات آزمایشگاهها: نگارندهٔ متن غنی، مدیریت افزارهٔ جدید، پخش صدا. هنوز زیر توسعهٔ فعّال!
|
||||
گزارش دگرگونی کامل: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/fa/changelogs/40105060.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40105060.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
تغییرات عمده در این نگارش: رابط کاربری جدید برای گزینش پیوست.
|
||||
گزارش دگرگونی کامل: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/fa/changelogs/40105070.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40105070.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
تغییرات عمده در این نگارش: رابط کاربری جدید برای گزینش پیوست.
|
||||
گزارش دگرگونی کامل: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/fa/changelogs/40105080.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40105080.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
تغییرات عمده در این نگارش: رفع اشکالها و بهبود.
|
||||
گزارش دگرگونی کامل: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/fr-FR/changelogs/40105040.txt
Normal file
2
fastlane/metadata/android/fr-FR/changelogs/40105040.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Principaux changements pour cette version : Nouvelles fonctionnalités expérimentales : éditeur de texte formaté, nouveau gestionnaire d’appareils, diffusion audio. C’est toujours en cours de développement !
|
||||
Intégralité des changements : https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/fr-FR/changelogs/40105060.txt
Normal file
2
fastlane/metadata/android/fr-FR/changelogs/40105060.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Principaux changements pour cette version : nouvelle interface de sélection d’une pièce jointe.
|
||||
Intégralité des changements : https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/fr-FR/changelogs/40105070.txt
Normal file
2
fastlane/metadata/android/fr-FR/changelogs/40105070.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Principaux changements pour cette version : nouvelle interface de sélection d’une pièce jointe.
|
||||
Intégralité des changements : https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/fr-FR/changelogs/40105080.txt
Normal file
2
fastlane/metadata/android/fr-FR/changelogs/40105080.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Principaux changements pour cette version : corrections de bugs et améliorations.
|
||||
Intégralité des changements : https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/id/changelogs/40105040.txt
Normal file
2
fastlane/metadata/android/id/changelogs/40105040.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Perubahan utama dalam versi ini: Fitur baru di belakang pengaturan uji coba: Komposer teks kaya, pengelolaan perangkat baru, siaran suara. Masih dalam pengembangan aktif!
|
||||
Catatan perubahan lanjutan: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/id/changelogs/40105060.txt
Normal file
2
fastlane/metadata/android/id/changelogs/40105060.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Perubahan utama dalam versi ini: Antarmuka baru untuk memilih sebuah lampiran.
|
||||
Catatan perubahan lanjutan: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/id/changelogs/40105070.txt
Normal file
2
fastlane/metadata/android/id/changelogs/40105070.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Perubahan utama dalam versi ini: Antarmuka baru untuk memilih sebuah lampiran.
|
||||
Catatan perubahan lanjutan: https://github.com/vector-im/element-android/releases
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue