Commit Graph

16399 Commits

Author SHA1 Message Date
Benoit Marty c64aa67e56 Move voicerecorder/impl test fakes next to the interfaces they fake
The fakes were in `libraries.voicerecorder.test`, the package of the `voicerecorder/test` module. Move them to `libraries.voicerecorder.impl.audio` and `libraries.voicerecorder.impl.file`.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 12:10:21 +02:00
Benoit Marty 845a193500 Move viewfolder/impl tests to the features.viewfolder.impl package
The tests and fakes were in `features.viewfolder.test.*`, which looks like a package of a test module, while they are in the `impl` module and test code from `features.viewfolder.impl.*`.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 12:10:20 +02:00
Benoit Marty bbaa83c8b8 Move PickerTypeTest to the libraries.mediapickers.api package
The test was in `libraries.mediapickers`, while `PickerType` is in
`libraries.mediapickers.api`.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 12:10:20 +02:00
Benoit Marty 0cf1d82281 Move StartChatNavigator to the features.startchat.impl package
It was the only file of the `startchat/impl` module in the
`features.startchat` package.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 12:10:19 +02:00
Benoit Marty abad21218d Move call/impl tests to the features.call.impl package
Some test sources were in `features.call`, `features.call.ui`,
`features.call.utils` and `features.call.notifications`, while the code
they test is in the corresponding `features.call.impl.*` packages.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 12:10:18 +02:00
Benoit Marty de6f820401 Fix usersearch/test namespace
The namespace was `libraries.usersearch`, without the `.test` suffix, while
the sources are in `libraries.usersearch.test`.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 12:10:17 +02:00
Benoit Marty a88a5cf698 Fix pushstore/impl namespace
The namespace was `libraries.push.pushstore.impl`, while the sources are in
`libraries.pushstore.impl`. Also update the `adb uninstall` hint of the
instrumentation test accordingly.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 12:10:16 +02:00
Benoit Marty fe8b3764e5 Move matrixmedia sources to the libraries.matrixmedia.* packages
The matrixmedia modules were using the `libraries.matrix.ui.media` package
(shared with the matrixui module) and `libraries.matrix.ui.media.*`
namespaces. Use `libraries.matrixmedia.api`, `libraries.matrixmedia.impl`
and `libraries.matrixmedia.test` instead, matching the module paths.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 12:10:14 +02:00
Benoit Marty 9cb68844da Merge pull request #7865 from element-hq/feature/bma/multiAccountBottomSheetAnnouncement
Announce multi-account support
2026-10-06 12:09:38 +02:00
Benoit Marty 6be1242ef0 Merge pull request #7867 from bardiharborow/feature/full-screen-intent-banner-refresh
Hide full screen intent banner as soon as the permission is granted
2026-10-06 11:46:15 +02:00
Benoit Marty 902631362e Merge pull request #7858 from element-hq/feature/bma/fixPackageNames
Fix wrong package names and namespaces in several modules
2026-10-06 10:58:25 +02:00
Benoit Marty b1f4178100 Replace AppMigration11 by a dismissal when entering the login flow
AppMigration11 was run once, in the first release containing it, whatever
the state of the MultiAccount feature flag. Users installing the app
while the feature flag was disabled were considered as new users and
would never see the announcement once the feature flag got enabled.

The multi-account announcement is now pending by default (NeverShown),
and is marked as shown when the user enters the login flow while the
feature is enabled, either for the first time or to add another account.
Users who were already logged in before the feature became available
will see the announcement.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 10:30:21 +02:00
Benoit Marty ddcd01a2bf Follow naming convention 2026-10-06 09:46:28 +02:00
Benoit Marty 72f4c4f897 Fix multi-account announcement never being displayed 2026-10-06 09:41:53 +02:00
ElementBot 86e72ac11e Update screenshots 2026-10-06 07:38:09 +00:00
Benoit Marty d91c22d1b2 Move new states at the end of the sequence 2026-10-06 09:10:47 +02:00
Benoit Marty 4d183ffeaf Add consign when AI adds new states for screenshot. 2026-10-06 09:05:28 +02:00
Benoit Marty 4e25ecd34c Dismiss the multi-account announcement when the user has several accounts
If the announcement was queued at upgrade while the user had a single
account, and the user then added another account without seeing it, the
announcement stayed pending and was shown later if the user removed an
account. Mark it as dismissed as soon as several accounts are detected.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 09:05:28 +02:00
Benoit Marty c654bf0947 Announce multi-account support
Show a one-time bottom sheet on the home screen to announce that several
accounts can now be added (element-hq/element-meta#3349).

- Add `Announcement.MultiAccount`, which is never shown by default.
- AppMigration11 queues the announcement on application upgrade only,
  and marks it as shown if the user already has several accounts.
- HomePresenter shows the bottom sheet only when the announcement is
  pending, the MultiAccount feature flag is enabled and the user has a
  single account.
- The "Add account" button hides the sheet, marks the announcement as
  dismissed and starts the add account flow through the new
  `HomeEntryPoint.Callback.navigateToAddAccount()`.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 09:05:28 +02:00
Benoit Marty 2de0d78ced Import multi-account announcement strings from Localazy
Add the `screen.multi_account_announcement.*` keys to the home module
Localazy configuration and import the latest strings.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 09:05:27 +02:00
mxandreas 2e5a6b72c9 Merge branch 'mxandreas/disable-public-rooms' of github.com:element-hq/element-x-android into mxandreas/disable-public-rooms 2026-10-06 09:57:06 +03:00
mxandreas f2310cc530 Made the hooks of room creation and security & privacy screen more generic. 2026-10-06 09:53:26 +03:00
renovate[bot] 7be369a5da Update gradle/actions action to v6.4.0 2026-10-06 06:37:04 +00:00
renovate[bot] f1723efa32 Update dependency com.google.testparameterinjector:test-parameter-injector to v1.24 (#7863)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-06 08:33:44 +02:00
Bardi Harborow 90806a1c85 Hide full screen intent banner as soon as the permission is granted
The permission is granted from the system settings, outside of the app,
so nothing triggered a recomposition of FullScreenIntentPermissionsPresenter
when the user came back. The "Enhance your call experience" banner kept
being displayed until something else caused a recomposition.

Check the permission again with LifecycleResumeEffect, as done in
BatteryOptimizationPresenter, and add a test for this case.
2026-10-06 09:40:56 +11:00
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
Jorge Martin Espinosa b76548f9a2 Dismiss notifications for rooms fully read in other devices (#7846)
* Dismiss notifications for rooms fully read in other devices
2026-10-05 17:56:16 +02: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 2864e867fa End all the remaining sessions of the Maestro account after the tests
Each Maestro run logs in to @maestroelement:matrix.org, and the sessions
pile up on the account. Run tools/mas/delete_all_sessions.py at the end
of the Maestro job, even if the tests failed, to end them all.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 15:00:37 +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 4464c311ad Bump enterprise module
Follow the package rename of `InMemoryCacheStore`, see
https://github.com/element-hq/element-android-enterprise/pull/66

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 14:36:56 +02:00
Benoit Marty ab20281b26 Fix wrong package names and namespaces in several modules
Some modules were using package names or namespaces inherited from copy-paste
or from older module names (e.g. `features.logout.impl` in the deactivation
module, `features.api` in the migration api module, `sessionstorage` in the
cachestore module), or containing typos (`roomaliasesolver`,
`roomdetetailsedit`).

Move the sources to the package matching their module, update the imports, and
rename the impacted screenshots accordingly.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 13:43:22 +02:00
ElementBot 54409a82af Update screenshots 2026-10-05 10:02:52 +00: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
mxandreas 84fdbbe573 Add a hook to disable public rooms/spaces on UI. 2026-10-05 09:31:31 +03:00
bmarty 50460ad031 Sync Strings from Localazy 2026-10-05 00:40:51 +00: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