Commit Graph

6083 Commits

Author SHA1 Message Date
Benoit Marty 355894cc74 Merge pull request #6944 from element-hq/feature/custom-recovery-key-wellknown
Add well-known parsing and extension seam for custom recovery passphrase
2026-06-17 13:58:22 +02:00
Benoit Marty 568e137cd4 Merge branch 'develop' into feature/bma/multipleForward 2026-06-17 10:31:44 +02:00
Benoit Marty 72e9371fa3 Custom recovery key: import strings from Localazy 2026-06-17 10:04:24 +02:00
bxdxnn 351acec58d Fix thread list not loading older threads (#7034)
* Fix thread list pagination
2026-06-16 20:52:52 +02:00
Jorge Martin Espinosa 8e9c0bedf2 Fix sharing media inside the app (#7016)
When a `MediaSource` is disposed, the local temp file associated to it will be deleted from disk.

When we try sharing a media from the media viewer screen to another room, this will dismiss the screen, which in turn will dispose of the media source and remove the file, which then fails to be shared.

If we copy it first and then make sure we delete it after trying to send it, it works fine.
2026-06-16 16:42:59 +02:00
Jorge Martin Espinosa 710f501689 ScanQrCodeViewTest: try fixing broken test in CI (#7027)
Add `LocalInspectionMode.current = true` in case the failure is related to rendering the `QrCodeCameraView`
2026-06-16 16:42:32 +02:00
ElementBot d39b208099 Sync Strings from Localazy (#7021)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-06-16 12:59:45 +02:00
bxdxnn 260639cde9 Fix invites not being sent during the room creation (#7018)
* Proceed to the room only from the 'Trust (user) On First Use' confirmation screen
2026-06-15 12:16:05 +02:00
Benoit Marty d33852d32f Room selection: add a limitation of 10 rooms for Share and Forward actions. 2026-06-12 09:22:29 +02:00
Jenna Vassar e90c91d446 Add a node-builder test for DefaultSecureBackupSetupEntryPoint
The new entry point had no test, leaving its createNode body (and the api
Inputs data class) uncovered and failing codecov/patch. Mirror the existing
Default*EntryPointTest convention to exercise the builder.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 16:04:25 -07:00
Jenna Vassar cc9d787602 Collapse the recovery passphrase strength labels to five tiers
Adopt the design feedback from element-meta#3228: drop the time-to-crack
hint strings and reduce the strength labels to Very weak / Weak / Moderate /
Strong / Very strong. Bumps the enterprise submodule to the matching
indicator change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 14:39:58 -07:00
renovate[bot] f0a6cba6db fix(deps): update android.gradle.plugin to v9 (major) (#6021)
* Update android.gradle.plugin to v9

* Separate extensions between app and library ones

`CommonExtension` has been split and its properties are now duplicated in `ApplicationExtension` and `LibraryExtension` without a shared interface, so we now need to duplicate the helper extension functions

* Bump Gradle wrapper to `9.3.1`

* Remove `kotlin-android` plugin usage: it's no longer needed

* Enable `resValues` build feature for the modules that have resources in custom variants like gplay, debug, etc.

Otherwise this now fails saying the resources are there but the feature is disabled

* Remove `retrofit` dependency from `:features:call:impl`

It wasn't in use and the build was failing

* Update kotlin to v2.4.0

* Update plugin paparazzi to v2.0.0-alpha05

* Update gradle wrapper to 9.5.1

./gradlew wrapper --gradle-version 9.5.1 --gradle-distribution-sha256-sum bafc141b619ad6350fd975fc903156dd5c151998cc8b058e8c1044ab5f7b031f

* Update com.android.tools.build:gradle to 9.2.1

* Update plugin sonarqube to v7.3.1.8318

* Kotlin 2.4.0

* Context parameters are enabled by default in Kotlin 2.4.0

* Fix code issue

* Fix record screenshot issue

* Workaround for https://github.com/cashapp/paparazzi/issues/2342

* Workaround for another issue with Paparazzi

* Remove unused import

* Update screenshots

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
Co-authored-by: Benoit Marty <benoitm@element.io>
Co-authored-by: Benoit Marty <benoit@matrix.org>
Co-authored-by: ElementBot <android@element.io>
2026-06-11 09:51:47 +02:00
Benoit Marty 99b7c758f2 Merge pull request #6954 from element-hq/fix/try-fixing-flaky-location-timeline-item-screenshots
Try fixing flaky screenshots for location timeline items
2026-06-10 14:44:39 +02:00
Benoit Marty ff8e477b4f Merge pull request #6984 from bxdxnn/fix/draft-threads
Fix message drafts not being saved in Threads
2026-06-10 14:44:12 +02:00
Jenna Vassar 1df91ca8d5 Drop the SecureBackupSetupEntryPoint KDoc to match sibling entry points
No other FeatureEntryPoint interface carries KDoc, and the genericised
comment only restated what FeatureEntryPoint + DI already imply.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 15:13:56 -07:00
Jenna Vassar 4f2c2b773a Move custom recovery passphrase strings to FOSS for iOS parity
Add the pro_screen_recovery_key_mode_* and a11y_recovery_key_* strings to
the securebackup module's temporary.xml so they flow through Localazy for
translation, matching element-x-ios#5684, and bump the enterprise submodule
to the commit that references these FOSS strings and drops its own copy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 15:07:47 -07:00
Jenna Vassar 2a66df7b8a Avoid describing Pro-build specifics in the recovery setup entry point doc
Genericise the SecureBackupSetupEntryPoint KDoc so the public repo no longer
spells out the enterprise custom recovery passphrase behaviour.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 12:15:21 -07:00
Jenna Vassar 8479c8346e Add bringIntoViewOnImeVisible modifier and adopt it on the recovery key screen
Extract the IME-aware bring-into-view logic into a reusable designsystem
modifier and use it in the enter recovery key screen, replacing the inline
BringIntoViewRequester wiring.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 10:03:39 -07:00
ganfra cf63453ff8 Fix tests (after rebasing develop) 2026-06-09 17:25:30 +02:00
Benoit Marty 703f2b22ed Improve static map preview / screenshots. 2026-06-09 13:00:30 +02:00
bxdxnn 3bc7da0e01 Apply suggestion from @bmarty
Co-authored-by: Benoit Marty <benoit.marty@gmail.com>
2026-06-09 13:29:58 +03:00
Jenna Vassar 6710b1c9c1 Remove custom recovery passphrase API from EnterpriseService
These methods gated the feature at runtime. The gate is now a DI binding swap in the enterprise build (EnterpriseSecureBackupSetupEntryPoint replaces the FOSS default), so the EnterpriseService surface and the CustomRecoveryPassphraseStrength result types are no longer needed in FOSS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 15:36:16 -07:00
Jenna Vassar a050716123 Remove custom recovery passphrase flow from FOSS secure backup setup
The custom passphrase entry/confirm UI now lives in the enterprise secure backup module behind the SecureBackupSetupEntryPoint seam. Reverts the setup presenter, view, state, state machine, state provider, and events to the auto-generated-key-only flow, deletes CustomPassphraseDerivations and the temporary strings, and drops the well-known and enterprise-test dependencies the feature required.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 15:36:02 -07:00
Jenna Vassar 1f84bef601 Add SecureBackupSetupEntryPoint extension seam
Introduces a FeatureEntryPoint for the recovery-key setup screen so enterprise builds can vend a richer setup node. The FOSS default builds the standard auto-generated-key node; SecureBackupFlowNode now resolves the Setup and Change targets through this seam instead of creating SecureBackupSetupNode directly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 15:35:30 -07:00
ganfra 6b9aa31c19 change(location): ensure permissions are always requested at least once 2026-06-08 22:10:04 +02:00
bxdxnn 8b4158c824 Address review 2026-06-08 18:17:45 +00:00
Jorge Martin Espinosa bea2903093 Click on avatar in moderation bottom sheet opens avatar preview (#6991)
* Make the avatar in the room member moderation bottom sheet open the avatar in the media viewer (#6962)

* Make the avatar in the room member moderation bottom sheet open the avatar in the media viewer.

* Fix issue with avatar overlay not dismissing the bottom sheet: the bottom sheet would eat all the touch events until the first click, which would somehow cancel this behaviour

* Fix lint issues

* Update screenshots

---------

Co-authored-by: bxdxnn <267911624+bxdxnn@users.noreply.github.com>
Co-authored-by: ElementBot <android@element.io>
2026-06-08 16:32:13 +02:00
ElementBot 5a4c0b5d58 Sync Strings from Localazy (#6986)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-06-08 14:33:40 +02:00
bxdxnn 6219378ad3 Fix "Sent" checkmark disappearing when the message is read and "Share presence" is disabled (#6985)
* Don't compute read receipts if presence sharing is disabled

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-06-08 13:21:34 +02:00
Benoit Marty c06e7ed276 Merge pull request #6953 from element-hq/feature/bma/cropIcon
Replace "Edit" button with Crop icon.
2026-06-08 10:15:11 +02:00
bxdxnn a10aa6cbe3 Support thread root in drafts 2026-06-06 18:26:46 +00:00
ganfra 53bbef0554 Merge pull request #6955 from element-hq/feature/fga/remove_location_dot_when_sharing
Change: hide UserLocationPuck when sharing from current device
2026-06-05 17:30:00 +02:00
Benoit Marty 43ab1e5050 Fix some string mappings for link new device errors (#6958)
* Fix some string mappings for link new device errors (#6675)

* Fix some string mappings for link new device errors

* Update snapshots

* Add appName

* Iterate

---------

Co-authored-by: Jorge Martin Espinosa <jorgem@element.io>
Co-authored-by: Benoit Marty <benoitm@element.io>

* Update screenshots

---------

Co-authored-by: Hugh Nimmo-Smith <hughns@users.noreply.github.com>
Co-authored-by: Jorge Martin Espinosa <jorgem@element.io>
Co-authored-by: ElementBot <android@element.io>
2026-06-05 11:17:44 +02:00
Jenna Vassar 8722305e12 Update strings for ios parity 2026-06-04 09:41:55 -07:00
Benoit Marty 4749ec3112 Replace "Edit" button with Crop icon. 2026-06-04 16:13:30 +02:00
Jorge Martin Espinosa a91e1fa2ae Make Vulkan a *not required* feature (#6961)
* Make Vulkan a *not required* feature

* Add `DeviceHasVulkanSupport` helper to check this on runtime

* When trying to open a screen with a map in it, check if vulkan is supported and display a new error dialog in that case

* Fix random lint issue

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-06-04 13:08:19 +00:00
Hugh Nimmo-Smith 1717cc7370 Fix some string mappings for link new device errors (#6675)
* Fix some string mappings for link new device errors

* Update snapshots

* Add appName

* Iterate

---------

Co-authored-by: Jorge Martin Espinosa <jorgem@element.io>
Co-authored-by: Benoit Marty <benoitm@element.io>
2026-06-04 09:34:55 +02:00
ganfra f800bb5586 change : Hide UserLocaitonPuck when currentlySharing from this device (and follow the marker instead of the puck) 2026-06-03 21:54:29 +02:00
ganfra 930aa4f1db change: ensure UserLocationState is computed from the Presenters instead of Views 2026-06-03 21:52:54 +02:00
bxdxnn 27cdc0fe7d Add unread count to the room unread indicator (#6887)
* Add unread indicator count

* Address review
2026-06-03 17:08:35 +02:00
Jorge Martín 63ba6d2b18 Try fixing flaky screenshots for location timeline items
Replace the `rememberAsyncImagePainter` call when in preview mode with fake values
2026-06-03 16:36:52 +02:00
Jorge Martin Espinosa 2ab780576a Remove the FloatingDateBadge feature flag (#6950)
* Remove the `FloatingDateBadge` feature. This is now always enabled.

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-06-03 16:34:06 +02:00
Benoit Marty a9ecf3c5dc Add flip actions to image edition 2026-06-03 11:03:56 +02:00
Jenna Vassar 3fc48787b8 Add missing PasswordVisibilityToggle extraction areas 2026-06-02 15:01:17 -07:00
Jenna Vassar db6f4414df Add custom recovery passphrase setup flow
When the homeserver advertises custom_recovery_passphrase_settings (and
the enterprise gate is enabled), the secure-backup setup lets the user
enter and confirm their own recovery key with a live strength indicator,
instead of receiving a generated one. The SDK derives the 4S key from the
passphrase and the base58 key is scrubbed everywhere so it is never
shown. Falls back to the generated-key flow when no spec is present or
the well-known fetch fails.

Snapshot PNGs are intentionally left out; the core team regenerates them
after the PR is opened.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 13:52:21 -07:00
Jenna Vassar 62ac6a3d2f Add enterprise gate for custom recovery passphrase
Add isCustomRecoveryPassphraseEnabled() and
estimateCustomRecoveryPassphraseStrength() to EnterpriseService, plus the
CustomRecoveryPassphraseStrength result types. FOSS builds return
false/null so the feature stays gated off; the enterprise implementation
(estimator) lands separately in the enterprise repo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 13:51:59 -07:00
Jenna Vassar 748454f34d Add shared PasswordVisibilityToggle design-system component
Extract the show/hide password trailing-icon into a reusable
PasswordVisibilityToggle so every password field reveals plaintext the
same way and announces the same a11y labels. Reuse it from the login and
reset-identity password fields. Pure refactor, no behaviour change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 13:33:04 -07:00
ganfra a9fe0a3560 Fix LiveLocationReceiver interface and update tests 2026-06-02 13:14:03 +02:00
ganfra 1a40e460ae Handle unrecoverable location errors and stop sharing 2026-06-02 12:23:14 +02:00
ganfra 1713555a67 Introduce PlatformLocationProvider to replace the maplibre one. 2026-06-02 10:29:23 +02:00