Commit Graph

15979 Commits

Author SHA1 Message Date
Benoit Marty 0ea76ecebf Merge pull request #7741 from element-hq/bma/settingsIterationStep1
Settings iteration: move user status and update multi-account section
2026-09-21 15:54:11 +02:00
ElementBot dceb57c9fc Update screenshots 2026-09-21 12:37:28 +00:00
Jorge Martin Espinosa 84a907d906 Fix regex for invalid placeholders (#7738)
This issue added some false positives to the list and broke the string synchronization.
2026-09-21 14:35:33 +02:00
Jorge Martin Espinosa 3c3e8f8f6f Start sync manually after completing the auth flow (#7734)
Do it before we wait for the known verification state so we can receive updates from the encryption sliding sync flow.
2026-09-21 14:34:34 +02:00
Benoit Marty da2b2e99d6 Fix chevron rotation issue. 2026-09-21 14:19:54 +02:00
Jorge Martin Espinosa c4529b87b4 Remove Roborazzi, use Paparazzi for Compound (#7735)
* Remove Roborazzi, use Paparazzi for Compound

The new screenshots will be recorded with the rest of the Paparazzi ones. Note the names changed, since Paparazzi enforces a `$packagename.$testname.$name.$extension` format

* Set a max width value for color previews

* Merge the `verifyPaparazziDebug` CI steps

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-09-21 12:27:56 +02:00
ElementBot 178c80a1a1 Update screenshots 2026-09-21 09:00:46 +00:00
Benoit Marty cc3b788b3e Animate user status state change 2026-09-21 10:41:03 +02:00
Benoit Marty 95d734efc9 Merge pull request #7705 from element-hq/bma/fixLeak
Close the threaded timelines created to create a poll, share a location or send media
2026-09-21 10:18:37 +02:00
Benoit Marty ae36cc3b1e Move user status next to the current account header.
Also make the other account section collapsable
2026-09-18 17:48:19 +02:00
ganfra f8fdfcae56 Merge pull request #7699 from element-hq/sync-localazy
Sync Strings
2026-09-18 16:54:21 +02:00
ElementBot 1379d79171 Update screenshots 2026-09-18 08:56:36 +00:00
ganfra b54937793f Merge branch 'develop' into sync-localazy 2026-09-18 10:39:43 +02:00
bxdxnn 5cac4767f1 Add smooth animation to voice messages play progress (#7698)
* Add linear animation to voice message playback progress

Instead of animating the small `progress` value changes, calculate an animation for the range `maxProgress - progress`, with a linear interpolator so it's completely smooth. Previously, the progress was updated in 'steps' that were quite noticeable.
2026-09-18 09:39:15 +02:00
Jorge Martin Espinosa c0bb68c872 New timeline event renderer: add new modules (#7721)
* Added HTML parser to abstract tree nodes

* Add HTML renderer using `HtmlMessageContent`

* Add custom rendering for inline code nodes besides the monospace font

* Support `<s>` and `<strike>` too

* Add `ContentAvoidingLayoutData` support

* Improve the last block node behaviour and its integration with `ContentAvoidingLayout`

* Move `ContentAvoidingLayout` to `:libraries:ui-common` so it can be shared

* Add missing `:libraries:htmlrenderer:impl` entry in `DependencyHandlerScope.allLibrariesImpl`

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-09-17 19:08:32 +02:00
Johannes Marbach 97d9707d6a Make NotificationResultProcessor.emit wait until the batch is processed (#7640)
Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
2026-09-17 16:13:06 +02:00
Benoit Marty 82c841a6b0 Merge pull request #7728 from element-hq/renovate/actions-setup-java-6.x
Update actions/setup-java action to v6.0.1
2026-09-17 15:40:26 +02:00
renovate[bot] ca753ee600 Update actions/setup-java action to v6.0.1 2026-09-17 12:54:12 +00:00
ganfra 47620e905f Merge pull request #7711 from element-hq/renovate/metro
Update metro to v1.4.3
2026-09-17 14:51:47 +02:00
ganfra 4a141c5702 Merge pull request #7716 from element-hq/renovate/net.zetetic-sqlcipher-android-4.x
Update dependency net.zetetic:sqlcipher-android to v4.19.0
2026-09-17 14:51:19 +02:00
Benoit Marty 58a00fd4e5 Merge pull request #7679 from element-hq/feature/bma/messageDeletionConfirmation
Let the user give an optional reason when removing a message
2026-09-16 16:37:51 +02:00
Jorge Martin Espinosa c3f128b6f0 Use patched Konsist version (forked, 0.18.0) (#7719)
* Use a patched fork of Konsist

The patch contains code to ignore hidden folders in the root project: by default, Konsist scans *every single file* in the root directory except for a few exceptions, and hidden folders were not a part of that.

That means `.git`, `.github`, etc. would be scanned to for no good reason and even worse,  hidden folders used for worktrees would get scanned too, so Konsist would end up scanning the same project with small variations several times and OOMing / taking ages to finish.

* Make `Immutable/Stable` annotation check more performant. Also, fix case that was previously not found
2026-09-16 11:27:44 +02:00
Benoit Marty ba2e2a02d1 Merge branch 'develop' into bma/fixLeak 2026-09-16 09:42:36 +02:00
renovate[bot] 35af1fca48 Update dependency io.element.android:element-call-embedded to v0.26.0 (#7715)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-16 08:38:38 +02:00
renovate[bot] 344b67f8e8 Update dependency net.zetetic:sqlcipher-android to v4.19.0 2026-09-15 21:18:31 +00:00
Benoit Marty 3e861cc646 Do not report detekt LargeClass issues on test classes (#7713)
detekt's default configuration excludes test source sets from
`TooManyFunctions` and `StringLiteralDuplication`, but not from
`LargeClass`, so large test classes were reported and had to carry a
`@Suppress("LargeClass")` annotation.

Add the same kind of exclusion to the `LargeClass` rule in
`tools/detekt/detekt.yml` and remove the 24 now-redundant suppressions
from test files. The two remaining suppressions are in production code,
where the rule still applies.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 13:56:33 +02:00
renovate[bot] 08eabd3ed5 Update metro to v1.4.3 2026-09-15 09:36:56 +00:00
Benoit Marty a4286a932a Merge pull request #7712 from element-hq/renovate/roborazzi
Update roborazzi to v1.74.0
2026-09-15 11:33:56 +02:00
Benoit Marty bcf136025a Merge pull request #7703 from element-hq/bma/accountProviderIteration
Iteration on Acount provider
2026-09-15 09:58:16 +02:00
Benoit Marty 98c19de6e3 Merge pull request #7707 from element-hq/bma/gitFlowToGit
Replace git flow with regular git commands in the release script V2
2026-09-15 09:20:34 +02:00
Benoit Marty fd315318a0 Update ref to main branch. 2026-09-15 09:15:38 +02:00
Benoit Marty c92bf4bc43 Sealed interface must be immutable when uses in Composable function parameters. 2026-09-15 09:11:40 +02:00
renovate[bot] dc466f1f5c Update roborazzi to v1.74.0 2026-09-15 05:09:14 +00:00
Benoit Marty 5b0d7bf5a7 Log errors and fix quality issues 2026-09-14 18:30:29 +02:00
ganfra ba80abcbf0 Merge pull request #7671 from element-hq/renovate/org.sonarqube-7.x
Update plugin sonarqube to v7.5.0.8588
2026-09-14 18:16:06 +02:00
Jorge Martin Espinosa 7aa43411e0 Reduce parallel JVMs spawned for tests (#7701)
* Set `maxParallelForks = 1` for most tests, except for screenshot ones

It turns out the Robolectric setup penalty compounds the more parallel JVMs you spawn. Using 1 JVM vs 8 was up to 2.5x faster in local tests.

* Split the roborazzi tests tasks config and CI step
2026-09-14 18:14:46 +02:00
Benoit Marty f97dac2d5b Update ref
Point to the enterprise submodule rebased on main, which brings the X.509
feature, and resolves the MdmData conflict between the new UseX509 entry and
the split of AccountProvider into AccountProviderServerName,
AccountProviderManagedBaseUrl and AccountProviderManagedCanUseServerName.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 18:09:52 +02:00
renovate[bot] 600a989854 Update kotlinpoet to v2.4.0 (#7709)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-14 16:09:23 +00:00
ganfra 99237f0146 Merge branch 'develop' into renovate/org.sonarqube-7.x 2026-09-14 17:30:21 +02:00
Benoit Marty 84b6224e4d Update ref 2026-09-14 17:18:18 +02:00
Benoit Marty f9a493ef0c Add Kdoc on data class AccountProvider 2026-09-14 16:55:25 +02:00
Benoit Marty ed250320b3 Close the threaded timelines created by ShareLocationPresenter and DefaultMediaSender
Both created a dedicated timeline for each operation performed in a thread, and
never closed it, leaking SDK resources. Apply the same treatment as PollRepository:
replace getTimeline() with a scoped withTimeline() helper, which closes the created
timeline once the operation completes, whether it succeeds, fails or gets cancelled.

In DefaultMediaSender.sendGallery(), waiting for the upload handler is now done
inside the block, so that the timeline stays open until the upload completes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 15:21:14 +02:00
Jorge Martin Espinosa 3d198d8065 Fix flaky test in TimelinePresenterTest (#7702)
The problem seemed to be sometimes the background work to switch from live timeline to a focused event timeline wasn't finished in time and an assertion failed from time to time.

By providing the coroutine to run this on we can pass a `TestScope` and force it to reliably run immediately instead in unit tests.
2026-09-14 15:19:14 +02:00
Benoit Marty e2fb2962f6 Close the threaded timeline created by PollRepository
PollRepository created a dedicated timeline for each operation performed in a
thread, and never closed it, leaking SDK resources. Replace getTimelineProvider()
with a scoped withTimeline() helper, so that the created timeline is closed once
the operation completes, whether it succeeds, fails or gets cancelled.

The live timeline is left untouched, since it is owned by its room.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 15:17:24 +02:00
ElementBot aa69321898 Update screenshots 2026-09-14 12:36:16 +00:00
Benoit Marty bf70bb3e50 Update ref 2026-09-14 11:30:23 +02:00
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
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
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