Commit Graph

14368 Commits

Author SHA1 Message Date
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
Jenna Vassar 8722305e12 Update strings for ios parity 2026-06-04 09:41:55 -07: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 0cb9d2911d Allow enableRecovery to derive the key from a passphrase
enableRecovery now takes an optional passphrase and returns the recovery
key as the suspend result (like resetRecoveryKey), avoiding the
flow/return-value race. For the passphrase path the SDK-derived base58
key is kept out of the session-scoped progress flow so it is never
surfaced to the user; the caller receives it as the return value and is
responsible for scrubbing it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 13:52:08 -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 2931418018 Parse custom_recovery_passphrase_settings from Element .well-known
Add CustomRecoveryPassphraseRequirements to ElementWellKnown and decode
the custom_recovery_passphrase_settings block (currently just
min_character_count) from the homeserver's element.json. Invalid specs
(missing or non-positive min_character_count) are logged and mapped to
null so the setup flow falls back to the generated-key path. Field names
match the ESS well-known schema (element-enterprise#261).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 13:33:18 -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
Jorge Martin Espinosa 42566b4b1f Release proximity wakelock on Element Call when call ends (#6825)
The `CoroutineScope` that launched this logic was cancelled by that point, so the wakelock was never released.
2026-05-20 15:23:03 +02:00
Jorge Martin Espinosa 64d9336901 Fix 'Conversation label cannot be empty' error (#6823)
This happens when building a `ShortcutInfoCompat` in `DefaultNotificationConversationService.onSendMessage` when the provided room name is not null but it's empty.
2026-05-20 14:26:44 +02:00
Jorge Martin Espinosa 42c141109f Fix media viewer flickering (#6800)
* Fix media viewer flickering

This was caused by the data being loaded triggering an index update that got out of sync with the displayed items, and for an instant, the pager index pointed to the wrong data until it was refreshed

* Reuse the same 'displayer' function for both forwards and backwards pagination

* Make `dataFlow` a property so we don't create a new instance every time we access it

* Remove `pageDataComparator` as it prevented new items from being loaded when a pagination returned no valid items to display but has more items to load

Make sure we modify the current index when loading new data only if it was pointing to the input event id.

* Fix `MediaViewerDataSource` overriding the provided timestamp for `Loading` items

Test emitting different loading items from the data source results in the state displaying the different items, so they will trigger a new pagination attempt

* Add regression test to check loading -> error -> loading states will still trigger 2 separate `LoadMore` events
2026-05-20 11:32:32 +02:00
ganfra 52f12031c8 Merge pull request #6819 from element-hq/renovate/net.zetetic-sqlcipher-android-4.x
Update dependency net.zetetic:sqlcipher-android to v4.16.0
2026-05-19 21:15:19 +02:00
renovate[bot] 2248cd20f3 Update dependency net.zetetic:sqlcipher-android to v4.16.0 2026-05-19 16:39:00 +00:00
Benoit Marty 5af57906b5 Changelog for version 26.05.2 2026-05-19 15:23:47 +02:00
Benoit Marty 28d4985435 Merge tag 'v26.05.2' into develop
tag
2026-05-19 14:44:13 +02:00
Benoit Marty 20d0d115d4 Merge branch 'release/26.05.2' 2026-05-19 14:44:04 +02:00
Benoit Marty d8793ca8f6 Adding fastlane file for version 26.05.2 2026-05-19 14:44:02 +02:00
Benoit Marty f373c73e60 Setting version for the release 26.05.2 2026-05-19 14:43:49 +02:00
renovate[bot] 2f406eaf41 Update dependency org.matrix.rustcomponents:sdk-android to v26.05.18 (#6805)
* Update dependency org.matrix.rustcomponents:sdk-android to v26.05.18

* Fix breaking API changes

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-05-19 09:20:06 +02:00
ganfra 6cc2e59436 Merge pull request #6811 from element-hq/feature/live_location_remove_feature_flag
Remove LiveLocationSharing feature flag
2026-05-19 09:16:18 +02:00
Jorge Martin Espinosa e3d1a811d5 Disable biometric unlock when we disable pin code unlock (#6781)
* Disable biometric unlock when we disable pin code unlock
2026-05-18 22:19:22 +02:00
Jorge Martin Espinosa 4e3853a718 Attempt to fix room list item duplicates at midnight (#6793)
* Attempt to fix room list item duplicates at midnight

This seems to happen because of a race condition between `RoomListDataSource.observeDateTimeChanges` and `RoomListDataSource.replaceWith` being called at almost the same time and the first one using the newly received items from observing the timeline items but not updating the cache which will be later reused by `replaceWith`, containing incorrect indices
2026-05-18 22:18:52 +02:00
Benoit Marty 1774d1d39a Merge pull request #6776 from element-hq/feature/bma/renovateConfig
Renovate: Keep Guava on the Android variant and ignore jre-only upgrades
2026-05-18 21:04:29 +02:00
ganfra 828337b343 Remove LiveLocationSharing feature flag 2026-05-18 20:25:36 +02:00
Jorge Martin Espinosa 174a6cad0d Create a new room when inviting people in a DM (#6756)
* Create a new room when inviting people to a DM

* Improve screenshot tests

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-05-18 19:01:11 +02:00
Benoit Marty 07668502fa Merge pull request #6798 from element-hq/sync-localazy
Sync Strings
2026-05-18 18:45:27 +02:00
Benoit Marty 1111315c6a Merge pull request #6802 from hughns/qr-other-device-not-signed-in
Show error message when using "Sign in with QR code" with a QR from a device that is also not signed in
2026-05-18 14:33:17 +02:00
Benoit Marty 653d9861dc Remove SignInWithClassic FeatureFlag to enable the feature. (#6698)
Closes #6669
2026-05-18 13:54:54 +02:00
Hugh Nimmo-Smith 2771ce9442 Merge branch 'qr-other-device-not-signed-in' of https://github.com/hughns/element-x-android into qr-other-device-not-signed-in 2026-05-18 11:53:02 +01:00
Hugh Nimmo-Smith fb17fc7e8a Iterate 2026-05-18 11:52:51 +01:00
Hugh Nimmo-Smith efa61f1d24 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-18 11:51:23 +01:00
Hugh Nimmo-Smith 458405b29f Iterate 2026-05-18 11:44:47 +01:00
Jorge Martin Espinosa 9b1735e0e9 Fix Maestro again after changes to the invite flow (#6796)
* Fix Maestro: tap on confirmation for inviting unknown users to a room

* Tap on back after inviting some user

* Tap on back again

* Confirm inviting someone to a DM

* Make fix conditional
2026-05-18 09:26:58 +00:00
Hugh Nimmo-Smith 668edbc679 Fix scanning code from signed out device when using "Sign in with QR code" 2026-05-18 09:50:54 +01:00
Jorge Martin Espinosa 2954174c56 Only load full media on media viewer when it's the visible item (#6794)
* Only load full media on media viewer when it's the visible item

* Allow cancelling ongoing media loading if scrolling fast
2026-05-18 10:29:14 +02:00
cizra e6c3a8ff1d Add MIDI playback (#6770)
* Add MIDI playback

* Implement PR suggestions
2026-05-18 10:06:47 +02:00
renovate[bot] a89d37297f Update dependency com.google.firebase:firebase-bom to v34.13.0 (#6789)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-18 09:22:20 +02:00
renovate[bot] 1c317d1ffd Update dependency androidx.webkit:webkit to v1.16.0 (#6786)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-18 09:21:46 +02:00
renovate[bot] ef7d1a10bf Merge pull request #6783 from element-hq/renovate/camera
Update camera to v1.6.1
2026-05-18 09:17:07 +02:00
bmarty dcc67f9fc6 Sync Strings from Localazy 2026-05-18 00:57:56 +00:00
Jenna Vassar cbc677b80d Fix room list duplicate-detection telemetry crashing before it can report (#6791)
* Add room dupe regression tests

* Fix telemetry path for dedupe discovery
2026-05-15 10:43:21 +02:00
renovate[bot] 432a7712c4 Update kotlin (#6790)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-15 09:03:50 +02:00
renovate[bot] 486754602d Update dependency io.sentry:sentry-android to v8.41.0 (#6787)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-14 08:09:00 +02:00
renovate[bot] e563fc7919 Update dependency androidx.compose:compose-bom to v2026.05.00 (#6784)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-14 08:08:21 +02:00
Jorge Martín 5e577e2360 Changelog for version 26.05.1 2026-05-13 13:59:48 +02:00
Jorge Martín 68d0cad3b7 Merge tag 'v26.05.1' into develop
v26.05.1
2026-05-13 13:12:51 +02:00
Jorge Martín c1fcb0f6f6 Merge branch 'release/26.05.1' 2026-05-13 13:12:43 +02:00
Jorge Martín 4823267013 Adding fastlane file for version 26.05.1 2026-05-13 13:12:42 +02:00
Jorge Martín 7e6d3c60d2 Setting version for the release 26.05.1 2026-05-13 12:15:26 +02:00