Commit Graph

16208 Commits

Author SHA1 Message Date
ganfra 752b0c59b6 Move the composable lambda parameter last in TimelineItemRowContent 2026-10-05 20:48:35 +02:00
ganfra cb501f3b5f Fix the Detekt issues on the timeline selection code 2026-10-05 20:48:24 +02:00
ganfra 9b2dcd4b26 Fix the Konsist preview naming for the selection previews 2026-10-05 20:48:14 +02:00
ganfra d4310cb6e9 Use toImmutableSet instead of toPersistentSet 2026-10-05 20:48:05 +02:00
ganfra 7ef93b51e4 Use the Element Creations license header on the new selection files 2026-10-05 20:47:57 +02:00
ElementBot 721cedbc45 Update screenshots 2026-10-05 16:25:38 +00:00
ganfra 5ab9860e89 Merge branch 'develop' into feature/fga/timeline-multi-forward 2026-10-05 17:54:00 +02:00
Benoit Marty 774b4087f5 Merge pull request #7759 from element-hq/feature/bma/startChatIconUpdate
Update Chat icon and text font for Empty room list.
2026-10-05 17:12:47 +02:00
ElementBot 19a0b3d517 Update screenshots 2026-10-05 14:26:03 +00:00
Benoit Marty 56f8925ff3 Update Chat icon and text font for Empty room list.
Closes #7739
2026-10-05 16:03:55 +02:00
Benoit Marty f1cdd5aff5 Merge pull request #7832 from element-hq/renovate/androidx.javascriptengine-javascriptengine-1.x
Update dependency androidx.javascriptengine:javascriptengine to v1.1.1
2026-10-05 15:22:34 +02:00
Benoit Marty 3cff5f35a3 Merge pull request #7700 from element-hq/renovate/kotlin
Update kotlin
2026-10-05 15:21:42 +02:00
Benoit Marty 1f44eb4249 Merge pull request #7857 from element-hq/feature/bma/copyToClipboardNoDoubleToast
Mark the recovery key as sensitive when copying it, and do not show a copy confirmation on Android 13+
2026-10-05 14:51:04 +02:00
Benoit Marty b9ed090400 Use only ClipboardHelper to copy to the clipboard, and do not render feedback on Android 13+
Since Android 13, the system displays its own confirmation when content
is copied to the clipboard, so the application does not render its own
Toast or Snackbar anymore on those versions.

Context.copyToClipboard, CopyToClipboardUseCase and the direct
ClipboardManager usage in EventDebugInfoView are removed.
ClipboardHelper.copyPlainText(text, isSensitive, onSuccessOnOldDevice)
is now the only entry point, and AndroidClipboardHelper is the only
class using ClipboardManager.

Copy actions from the views are moved to their Presenter through new
events, or to the Node when there is no Presenter. A ToastHelper is
introduced so that Toasts are kept where they were used before.
Snackbars are kept where they were already used.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 11:40:08 +02:00
Jorge Martin Espinosa b038e30d28 Exclude custom state events from the timeline (#7854)
Don't display custom state events not supported by the SDK
2026-10-05 11:12:12 +02:00
Benoit Marty 38e74ff43d Merge PR #7849: Mark the recovery key as sensitive when copying it to the clipboard 2026-10-05 10:44:39 +02:00
Bardi Harborow 48d6b5cadf Improve the reset identity password field (#7850)
Use the password keyboard type, mark the field as a password for
autofill, and submit the reset with the IME "Done" action, matching
the login password field.
2026-10-05 09:38:32 +02:00
Bardi Harborow f59f5da64c Mark the recovery key as sensitive when copying it to the clipboard
The recovery key was copied without EXTRA_IS_SENSITIVE, so Android 13+
showed it in the clipboard preview and keyboards could store it in
their clipboard history.

Add an isSensitive option to CopyToClipboardUseCase and
Context.copyToClipboard, and set it when copying the recovery key.
2026-10-04 20:26:48 +11:00
ganfra e99861a5c1 Keep selection mode active until explicitly exited 2026-10-02 20:41:04 +02:00
Benoit Marty a6d9d27c68 Merge pull request #7827 from element-hq/feature/bma/multiAccountIncomingUserVerification
Multi account incoming user verification
2026-10-02 18:56:58 +02:00
renovate[bot] 096a937a39 Update metro to v1.4.5 (#7842)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-02 16:41:58 +02:00
Jorge Martin Espinosa 7fd8e5b721 Fix unread indicator for messages (#7841)
* The expected logic for unread messages is displaying just a dot

The count might not be accurate, so we keep the dot for now.

* Fix tests
2026-10-02 16:36:22 +02:00
ganfra d826a72d49 Merge pull request #7815 from element-hq/renovate/org.robolectric-robolectric-4.x
Update dependency org.robolectric:robolectric to v4.17
2026-10-02 15:47:36 +02:00
ganfra 6f41999489 Merge pull request #7835 from element-hq/renovate/work
Update dependency androidx.work:work-runtime-ktx to v2.12.0
2026-10-02 15:47:03 +02:00
Jorge Martin Espinosa f5d6c00827 Bump enterprise module (#7838)
* Bump enterprise module

* Fix lint issues
2026-10-02 11:26:53 +02:00
Jorge Martin Espinosa a12977b4dc Fix remainingPlaybackAnimationMs crash (#7836)
This happens when trying to round `Float.NaN` to `Int`
2026-10-02 11:09:46 +02:00
Jorge Martin Espinosa 558c4541cd Fix StrictMode config (#7837)
Remove `penaltyDialog()` as it makes the app unusable even in debug builds
2026-10-02 10:05:08 +02:00
ElementBot 3130de8273 Update screenshots 2026-10-02 08:11:58 +02:00
Benoit Marty 4602e1f32d Show the account receiving the incoming user verification request 2026-10-02 08:11:57 +02:00
Benoit Marty 5ed880d539 Merge pull request #7823 from element-hq/feature/bma/multiAccountIncomingVerification
Multi account incoming device verification
2026-10-02 08:10:19 +02:00
Jorge Martín bfdfa836d9 Fix Robolectric 4.17 issues 2026-10-02 08:02:41 +02:00
Jorge Martin Espinosa 2dd0a47eb4 Allow displaying only unread notifications (#7803)
* Allow displaying only unread notifications

Add `FeatureFlags.ShowAllActivityInRoomList` (enabled by default, to match the current behavior) that, when disabled, will display the unread messages of a room instead of unread notifications if no unread notifications are found

* Restore UI changes to the badges, `RoomSummaryRow` and `HorizontalFloatingToolbar`

* Fix `NavigationBarIcon`: use `BadgeBox` component.

* Adjust padding in `RoomSummaryRow` to 6.dp

* Fix other indicators not displaying a dot anymore

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-10-01 19:46:01 +02:00
Jorge Martin Espinosa a3ff7e1486 Make StrictMode more lenient for network on main thread violations (#7830)
* Make `StrictMode` more lenient for network on main thread violations

`rustls-platform-verifier-android:0.2.0` performs the certification revocation checks in whatever thread called the Rust code that triggered the network request. In our codebase, sometimes this is the main thread through `MainScope`.

This would usually be fine if we were using suspend APIs, since it would just wait for a result and not block the main thread. However, the cert verification logic uses some `HttpUrlConnection` calls under the hood that are fully blocking and this triggers `NetworkOnMainThreadException`, which in turn make the revocation fail.

With these changes, we log those issues but don't make them break the certificate verification. That said, we should revert this logic once a fix lands in the verifier.

* Make the `StrictMode` weaker only for release and nightly builds

This way we can fix the issues when we detect them in debug builds.

* Fix `org.matrix.rustsdk.Android.init` not being called immediately in `PlatformInitializer`

This must be called before `platformService.init(tracingConfiguration)`

* Add `penaltyDialog`, to check if it's useful or just annoying
2026-10-01 16:55:23 +00:00
Benoit Marty 86caf33504 Use withPreviousValue() to detect removed sessions
Replace the hand-written runningFold in RootFlowNode.observeRemovedSessions() with the existing withPreviousValue() helper, as done in IncomingVerificationRequestObserver.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 18:37:40 +02:00
Benoit Marty d68e92a4f0 Remove verification listeners of logged out sessions
- Clear the listener when RustSessionVerificationService is destroyed.
- IncomingVerificationRequestObserver removes the listener of the clients which are not in the MatrixSessionCache anymore.
- Remove the sessions from the MatrixSessionCache when they are removed from the SessionStore (logout, account deactivation).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 18:23:14 +02:00
renovate[bot] 11fa8a76a4 Update dependency androidx.work:work-runtime-ktx to v2.12.0 2026-10-01 16:22:42 +00:00
renovate[bot] 6e012ec7ed Update dependency androidx.annotation:annotation-jvm to v1.11.0 (#7834)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-01 18:18:19 +02:00
Jorge Martin Espinosa 6cde0706be Add remove item and clear history buttons to search history (#7816)
* Add remove and clear history buttons to search

* Rename `SearchHistoryResultItem` to `SearchHistoryListItem` and `MessagesSearchResultItem` to `MessageSearchListItem`

Also, add some docs.

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-10-01 18:17:18 +02:00
Benoit Marty d589ff37dc Merge pull request #7831 from element-hq/feature/bma/fixScreenshotFlakiness
Stop rewriting screenshots that did not meaningfully change
2026-10-01 17:43:25 +02:00
ganfra 3847922895 Merge pull request #7826 from element-hq/feature/fga/user-status-update
Update user status UI
2026-10-01 17:33:33 +02:00
ElementBot 852d540dd0 Update screenshots 2026-10-01 14:48:38 +00:00
Benoit Marty cb19232e5a Fix compilation warnings after Kotlin 2.4.20 and KSP 2.3.12 upgrade
- Update .idea/kotlinc.xml to Kotlin 2.4.20.
- Remove `-Xannotation-default-target=first-only`: the new annotation
  default target rule is stable in Kotlin 2.4, and disabling it now
  produces a CLI_ARG_DISABLES_STABLE_FEATURE warning.
- Replace deprecated `KSNode.validate()` with
  `validate(enableNewFeatures = false)` to keep the same behavior.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 16:45:18 +02:00
renovate[bot] 3b96d840c5 Update dependency org.robolectric:robolectric to v4.17 2026-10-01 14:10:17 +00:00
renovate[bot] fd9bd1b9af Update dependency androidx.javascriptengine:javascriptengine to v1.1.1 2026-10-01 14:09:54 +00:00
Benoit Marty ea9eec245a Merge pull request #7811 from element-hq/renovate/com.google.testparameterinjector-test-parameter-injector-1.x
Update dependency com.google.testparameterinjector:test-parameter-injector to v1.23
2026-10-01 16:07:48 +02:00
Benoit Marty 56f8cffe34 Remove LayoutLibErrorFilterStatement
Paparazzi 2.0.0-alpha05.1 ships layoutlib 16.2.3, which fixes the errors this
rule was swallowing. All screenshot tests pass without it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 15:58:52 +02:00
Benoit Marty 73b3282939 Stop rewriting screenshots that did not meaningfully change
Recording rewrote every screenshot unconditionally, so renderer noise far below
the verification tolerance produced large "Update screenshots" commits.

Use `app.cash.paparazzi.overwriteOnMaxPercentDifference` to keep screenshots that
are within tolerance. Existing screenshots are no longer deleted before recording;
obsolete ones are pruned afterwards, only when their preview produced no
screenshot at all.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 15:46:28 +02:00
ganfra 2d30dc6cf0 Merge branch 'develop' into feature/fga/timeline-multi-forward 2026-10-01 15:23:42 +02:00
ganfra 2fb82c5e81 Make the whole avatar row clickable, with ripple on the avatar 2026-10-01 15:21:25 +02:00
ganfra fd60ba1018 Merge pull request #7825 from element-hq/feature/fga/fix-home-scroll-connection
Fix home screen top bar consuming its own scroll events
2026-10-01 09:38:01 +02:00