Commit Graph

16177 Commits

Author SHA1 Message Date
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
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
renovate[bot] 3b96d840c5 Update dependency org.robolectric:robolectric to v4.17 2026-10-01 14:10:17 +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 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
ElementBot 306f96e2a6 Update screenshots 2026-09-30 19:07:56 +00:00
ganfra ff8bb78f12 Fix home screen top bar consuming its own scroll events 2026-09-30 18:02:19 +02:00
ganfra e50e6e599e Display the user status emoji beside the avatar 2026-09-30 17:58:03 +02:00
ElementBot ee65fb99ae Update screenshots 2026-09-30 15:21:35 +00:00
Benoit Marty 36547dd5c5 Display incoming verification requests of all the signed-in accounts
Restore all the sessions with a valid token so that they sync and can receive
incoming verification requests, and listen to the requests of all of them with
IncomingVerificationRequestObserver.

Requests for the current account are still displayed by LoggedInFlowNode.
Requests for another account are displayed on top of the current account,
without switching, by OtherSessionIncomingVerificationNode which sets up the
Session graph of the account receiving the request.

Closes #7770

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 17:01:14 +02:00
Benoit Marty e6750dd301 Show the account receiving the device verification request
Replace SessionDetailsView by AccountInfoCard with the DeviceVerification mode
on the incoming device verification screen, so that the account concerned by
the request is clearly indicated, with its avatar and Matrix ID.

The current user is built from the SessionStore, including the locally stored
avatar thumbnail, used as a fallback when the avatar cannot be loaded, for
instance for an account which is not the current one.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 17:01:14 +02:00
Benoit Marty 7502ab16c5 Merge pull request #7824 from element-hq/feature/bma/iconPrimaryColor
Make sure the icon header use primary color
2026-09-30 16:47:49 +02:00
Jenna Vassar 0f29e8e875 Add an extension for room details sections (#7781)
* Add an extension for room details sections

Provide a no-op rendering hook for build-specific room details sections and shared room audio labels. Keep the default room details behavior unchanged.

* Cover the default room details extension

Verify that the no-op extension renders no content and leaves surrounding UI unchanged through recomposition. Cover its constructor and both generated render paths.

* Refine the room details extension and link the enterprise picker

Expose ColumnScope to contributed room details sections and use room-details string keys. Pin the enterprise submodule to the reviewed picker implementation so integrated builds include it behind the default-off flag.

* Make the room details extension a functional interface

Declare the single composable rendering contract as a fun interface to satisfy the Sonar check while preserving its named dependency injection binding.

* Update localazy strings for the audio section in room details

* Bump enterprise commit

---------

Co-authored-by: Jorge Martín <jorgem@element.io>
2026-09-30 14:18:13 +00:00
ElementBot d1c041094e Update screenshots 2026-09-30 14:07:57 +00:00
Benoit Marty 439898a74c Merge pull request #7819 from element-hq/renovate/sqldelight
Update sqldelight to v2.4.0
2026-09-30 15:57:25 +02:00
ganfra df81f5c0f7 Remove user status from the Matrix user header 2026-09-30 15:54:41 +02:00
Benoit Marty a597ec2dd3 Add a Figma link 2026-09-30 15:48:39 +02:00
Benoit Marty 1ac63ebec5 Icon in BigIcon have a iconPrimary color according to Figma. 2026-09-30 15:44:12 +02:00
Benoit Marty 485f71c824 Merge pull request #7822 from element-hq/feature/bma/signedOutScreen
Update signed out screen
2026-09-30 15:41:21 +02:00
Jorge Martin Espinosa 8c0d23771c Enable automatic back pagination and unread indicators by default (#7800)
* Enable automatic back pagination and unread indicators by default

We want to test these in the nightlies.
2026-09-30 15:09:32 +02:00
Benoit Marty 9459e3673e Remove unused parameter 2026-09-30 14:58:32 +02:00