Commit Graph

16439 Commits

Author SHA1 Message Date
Benoit Marty 6887092ce4 Replace String by AccountProvider to be able to get baseUrl and serverName. 2026-09-14 09:56:16 +02:00
bmarty 5102f6b0fa Sync Strings from Localazy 2026-09-14 00:54:38 +00:00
bxdxnn 7191313ce5 Allow changing keystore path 2026-09-12 18:10:53 +00:00
Jorge Martin Espinosa 8cd3750cde Make global search use a Joined filter for room results (#7695)
Before this, global search returned also invites, which wasn't planned.
2026-09-11 17:36:38 +02:00
ElementBot b28b2ceeed Update screenshots 2026-09-11 15:04:02 +00:00
Benoit Marty 5b09fdf13f Replace git flow with regular git commands in the release script V2
The script was relying on the external git-flow tool and on a local
`git config gitflow.*` initialisation, which made its behaviour depend on
the machine setup and hid what was actually done to the branches.

The release branch is now created with `git checkout -b`, and the release
is finished with explicit merge, tag, back-merge and branch deletion
commands. The merge and tag messages are provided explicitly so that the
generated history stays identical to the previous releases. Each step now
aborts the script with a clear message when it fails, instead of letting
the script continue.

Note that tools/release/release.sh (V1) still uses git flow.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-11 16:57:01 +02:00
Benoit Marty e7372c7f49 Use PreviewParameterProvider 2026-09-11 16:45:21 +02:00
renovate[bot] d2c49bf4af Update coil to v3.6.2 (#7693)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-11 13:53:11 +02:00
Benoit Marty 58b0f2ebc3 Merge pull request #7591 from element-hq/bma/iterateOnClientCreation
Iterate on client creation
2026-09-11 13:22:42 +02:00
ElementBot c643acda38 Update screenshots 2026-09-11 11:08:34 +00:00
Benoit Marty d59120aad0 Restart the sync service when it stops on an error
Synapse deletes sliding sync connections that have been unused for 7 days. When
an OEM battery manager has kept the application frozen for longer than that, the
next sliding sync request is answered 400 M_UNKNOWN_POS.

The Rust SDK handles that: it resets `pos` and, in offline mode, restarts the
sync. When that recovery gives up, the sync service ends up in the Error or
Terminated state and stops for good, and it is then up to the application to
call start() again. Element X iOS does it, we do not: SyncOrchestrator only
restarts the sync service when its state is Idle, so the sync stays dead for the
rest of the process lifetime.

Nothing recovers from there. The sync never reaches Running, so
waitForE2eeInitializationTasks() never returns, the session verified status
stays Unknown, and the FTUE is stuck on WaitingForInitialState. Clearing the
application data is the only workaround.

Restart the sync service when it is in the Error or Terminated state, with an
exponential backoff from 1s to 30s to avoid hammering a failing homeserver. The
backoff is only reset once the sync service has been running for a while, since
startSync() moves the state to Running right away.

Fixes #7689

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-11 12:48:58 +02:00
Benoit Marty 562e439447 Show a loading indicator on the placeholders which can stay on screen forever
emptyNode() renders nothing at all, which is fine for a placeholder that is left
within a few frames, but makes the application look frozen when the wait can
last, or never end.

Add a delayBeforeShowingContent parameter to emptyNode(): when it is finite, a
progress indicator and a "Loading…" label fade in after that delay, reusing the
existing DelayedVisibility helper. It defaults to Duration.INFINITE, so the
splash screen keeps rendering an empty canvas.

Use a one second delay on the two placeholders which are not guaranteed to be
left: the FTUE one, rendered while waiting for the session verified status, and
the LoggedInFlowNode one, rendered while the FTUE state is unknown.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-11 12:48:44 +02:00
Benoit Marty cbfef6a321 Update ref 2026-09-11 12:35:45 +02:00
renovate[bot] a5b95a18b2 Update dependency io.sentry:sentry-android to v8.55.0 (#7685)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-11 10:19:03 +02:00
ganfra 26578c79a9 Changelog for version 26.09.2 2026-09-10 22:24:50 +02:00
ganfra 518919c28b Merge tag 'v26.09.2' into develop
Release 26.09.2
2026-09-10 21:54:38 +02:00
ganfra 477c813997 Merge branch 'release/26.09.2' 2026-09-10 21:52:00 +02:00
ganfra 3e08454ff8 Adding fastlane file for version 26.09.2 2026-09-10 21:51:59 +02:00
ganfra 24a257bd38 Setting version for the release 26.09.2 2026-09-10 21:51:49 +02:00
ganfra 8101abf67d Merge pull request #7683 from element-hq/renovate/org.matrix.rustcomponents-sdk-android-26.x
Update dependency org.matrix.rustcomponents:sdk-android to v26.09.9
2026-09-10 11:48:42 +02:00
renovate[bot] 45ad16d17d Update dependency org.matrix.rustcomponents:sdk-android to v26.09.9 2026-09-10 05:10:32 +00:00
Jorge Martín c623105da6 Make the google-repo-only dependencies on renovate match those in gradle 2026-09-09 18:40:16 +02:00
Jorge Martín 5f499ce4b3 Ensure official Android dependencies are checked only against Google's Android repo 2026-09-09 18:40:16 +02:00
Jorge Martín 0b7d089791 Make Renovate only look for Element dependencies in maven central 2026-09-09 18:40:16 +02:00
Jorge Martín 10776a7e6b Make sure Android dependencies are fetched from Google's repo in Gradle sync 2026-09-09 18:40:16 +02:00
Jorge Martín 666081e2f2 Adjust concurrent requests for renovate 2026-09-09 18:40:16 +02:00
ElementBot 5df0dca56b Update screenshots 2026-09-09 15:26:04 +00:00
Benoit Marty 069fb2a03d Merge pull request #7678 from element-hq/feature/bma/removeShowkase
Remove Showkase and its in-app component browser
2026-09-09 16:59:30 +02:00
Benoit Marty a7ff96c1c3 Update wording of the remove message confirmation dialog.
And get strings from Localazy
2026-09-09 16:26:51 +02:00
Benoit Marty 50ec5f7dec Merge pull request #7538 from hayaksi1/fix/1612-redaction-reason
Let the user give a reason when removing a message
2026-09-09 16:11:33 +02:00
Benoit Marty 1ee156f480 Remove Showkase from the project. 2026-09-09 15:56:25 +02:00
Benoit Marty 8e1a34cff8 Merge pull request #7649 from element-hq/feature/bma/replaceDangerByGhAction
Replace Danger with actions/github-script
2026-09-09 11:30:13 +02:00
renovate[bot] 476e863734 Update plugin sonarqube to v7.5.0.8588 2026-09-09 07:53:31 +00:00
Jorge Martin Espinosa 3106fec05f Try improving renovate issues with Maven Central rate limiting (#7667)
* Try improving renovate issues with Maven Central rate limiting

Try not to make too many concurrent requests to Maven Central

The logs display rate limit responses followed by OK responses, which could mean we're hammering the Maven Central repo with too many concurrent requests

* Try not hitting Maven Central for `androidx` packages
2026-09-09 09:49:24 +02:00
Benoit Marty 3cde1523b4 Fix quality and tests. 2026-09-08 17:47:53 +02:00
ganfra 875ff9825b Merge pull request #7663 from element-hq/feature/fga/maplibre-compose-update
Update maplibre compose to 0.15
2026-09-08 17:15:32 +02:00
Benoit Marty a817b6f219 Rename methods and update documentation. 2026-09-08 17:06:53 +02:00
Benoit Marty 59e72fc3ee Stop deleting the session data of a logged in account on the next login
sessionPaths keeps pointing at the directories of the account which has
just been logged in, and it was never reset. Adding another account
calls setHomeserver(), whose rotateSessionPath() starts by deleting the
directories of the previous sessionPaths, so the file and cache
directories of the first account were wiped.

finalizeClientCreation() now forgets the session paths once the login
succeeded. It is done there rather than in clear() on purpose: after a
failed attempt the directories are orphaned and must still be deleted by
the rotateSessionPath() of the next attempt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 16:47:58 +02:00
Benoit Marty 579ec9bd6a Close the client used to log in before creating the client of the session
Since the login flows stopped handing their client over to
RustMatrixClientFactory and let finalizeClientCreation() build a fresh
one from the SessionData, two problems appeared.

The client built by loginWithQrCode() was never owned by anyone: it is
not assigned to currentClient, so clear() had nothing to close and the
Rust Client stayed open for the whole app lifetime, holding the session
stores of the freshly logged in account. It is now tracked in
currentClient, and also disposed of when the QR login fails, which is
safe because that flow always builds its own client.

The client of the session was also built while the login client was
still open. Both use the same session paths, so their state and crypto
SQLite stores, and the search index when message search is enabled, were
opened twice at the same time with no cross process lock to protect
them. clear() now runs before the final client is created.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 16:47:58 +02:00
Benoit Marty 1f18a18917 Iterate on hooks implementation 2026-09-08 16:47:57 +02:00
Benoit Marty 5ce531fd44 Ensure we create a fresh Client when the sessionId is know after authentication. 2026-09-08 16:46:46 +02:00
renovate[bot] 3df1906d2a Update dependency org.matrix.rustcomponents:sdk-android to v26.09.08 (#7668)
* Update dependency org.matrix.rustcomponents:sdk-android to v26.09.08

* Fix API breaks:

- There's no `SyncServiceBuilder.withProfilesExtension()` method anymore. This is now enabled unconditionally in the SDK.
- Timeline filters no longer use the `org.matrix.rustcomponents.sdk.TimelineEventFilter` FFI wrapper, but the `uniffi.matrix_sdk_ui.TimelineEventFilter` type directly. This also changes the underlying types used for inclusion/exclusion.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-09-08 16:22:14 +02:00
Jorge Martin Espinosa 039c0df9ed Fix remote config getting refreshed with Origin.Cache (#7666) 2026-09-08 13:50:01 +02:00
ganfra 4201ece647 Update gplay release manifest dump after location changes 2026-09-08 12:46:38 +02:00
ganfra 2c9c24921a Merge pull request #7664 from element-hq/renovate/coil
Update coil to v3.6.1
2026-09-08 11:43:13 +02:00
ganfra 9a4beb4278 Fix stability on UserLocationState 2026-09-08 10:15:03 +02:00
renovate[bot] 55d0503da8 Update coil to v3.6.1 2026-09-08 05:26:36 +00:00
ganfra 6c01ad1364 Fix formating 2026-09-07 19:04:13 +02:00
ganfra be666176a7 Merge pull request #7658 from element-hq/renovate/zizmorcore-zizmor-action-0.x
Update zizmorcore/zizmor-action action to v0.6.3
2026-09-07 19:03:36 +02:00
ganfra 7773ead79b Prevent location bottomsheet from being hidden 2026-09-07 18:56:25 +02:00