Commit Graph

15043 Commits

Author SHA1 Message Date
Damir Jelić d0d22ece78 refactor(latest-event): Ensure we have access to the event JSON when deciding on a latest event 2026-04-17 12:34:47 +02:00
Damir Jelić d49d86e8b0 fix(ui): Follow the spec more closely in how we reject invalid edits 2026-04-17 12:34:47 +02:00
Damir Jelić b226191bf4 test(common): Add some tests to validate the edit validation logic 2026-04-17 12:34:47 +02:00
Damir Jelić 21d7cd1b9d feat(common): Add a function to validate edits 2026-04-17 12:34:47 +02:00
Ivan Enderlin b066260554 doc(ui): Add #6459 in the `CHANGELOG.md. 2026-04-17 11:02:21 +02:00
Ivan Enderlin dbc6e3c3aa fix(ui): Fix a possible panic in Switch by updating async-rx.
This patch updates `async-rx` to fix a possible panic in `Switch`. It
now requires the outer stream to implement `FusedStream` (for the moment).
2026-04-17 11:02:21 +02:00
Benoit Marty 3293c94451 feat(ffi): Expose Client.request_openid_token() in order to let sdk clients request an openId token 2026-04-17 08:29:43 +00:00
Andy Balaam 53385798f6 Changelog update for #6457 2026-04-17 09:15:58 +01:00
Andy Balaam d49736455b Discard room key if someone leaves a room for a non-leave reason e.g. ban 2026-04-17 09:15:58 +01:00
Andy Balaam e278a99a20 Factor out parts of test_history_share_on_invite_room_key_rotation 2026-04-17 09:15:58 +01:00
Andy Balaam d5c7c886a1 Add a note helping to understand that an existing test is sufficient to cover e.g. Ban events as well as Leave 2026-04-17 09:15:58 +01:00
Ivan Enderlin b9b40c0ef2 doc(sdk): Add #6453 in the `CHANGELOG.md. 2026-04-15 17:49:46 +02:00
Ivan Enderlin 99d60bcc70 fix(sdk): Fix an infinite loop when loading pinned events from the storage.
This patch fixes a critical infinite loop when loading pinned events
from the storage if and only if there is more than one chunk for the
pinned events.

The previous implementation was broken in two ways:

1. if there was no previous chunk, then `prev` was set to `None`, but
   `previous` was never updated, so it was loop forever,
2. `load_previous_chunk` was called with the `last_chunk.previous` chunk
   identifier, which is incorrect: it must be called with the last chunk
   identifier, not the previous': otherwise it skips one chunk every time.

This patch adds a test to ensure everything works as expected.
2026-04-15 17:49:46 +02:00
Damir Jelić 64d602141a chore: Bump rustls and rustls-webpki
There appears to be a security issue.
2026-04-15 15:04:02 +02:00
Floriane TUERNAL SABOTINOV 59d2f8d4af refactor(examples): update get-profiles example to use Account::fetch_user_profile
Fixes #5902

## What this PR does

Keeps the existing `Client::send()` demo but extends it with:

- A doc comment on `get_profile` explaining the spec behaviour and the 401 
condition on  (Synapse's `require_auth_for_profile_requests`)
- A `get_profile_authenticated()` fallback using `account().fetch_user_profile()` 
which internally uses `force_auth()`
2026-04-15 13:00:41 +00:00
Kévin Commaille 80a253ada9 test(sdk): Add tests for profile capabilities
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-04-15 13:14:27 +02:00
Kévin Commaille ec5082bb9c fix(client): Fix logic for profile fields capabilities
The current implementation assumes that if the `m.profile_fields`
capability is missing, it means that the capability is not enabled, but
this is not what the spec says. However the spec says that it depends on
the Matrix versions advertised by the homeserver. So this adds a method
that properly computes the capability depending on the supported
versions too.

Similarly, for the display name and avatar URL fields the implementation
assumes that if the `m.profile_fields` capability is present but
disabled, we should fallback to the legacy capabilities. This behavior
is not present in the spec, so the code is changed to always use the new
capability when it is present, whether it is enabled or not. The
legacy capabilities are only used if the new capability is missing and
the homeserver doesn't advertise support for extended profile fields.

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-04-15 13:14:27 +02:00
Johannes Marbach 63f5be6935 feat(sync): Allow setting a custom Sliding Sync connection ID and timeline limit on RoomListService
Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
2026-04-15 11:06:57 +02:00
dependabot[bot] dab87b7731 chore(deps): bump CodSpeedHQ/action from 4.12.1 to 4.13.0
Bumps [CodSpeedHQ/action](https://github.com/codspeedhq/action) from 4.12.1 to 4.13.0.
- [Release notes](https://github.com/codspeedhq/action/releases)
- [Changelog](https://github.com/CodSpeedHQ/action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codspeedhq/action/compare/1c8ae4843586d3ba879736b7f6b7b0c990757fab...db35df748deb45fdef0960669f57d627c1956c30)

---
updated-dependencies:
- dependency-name: CodSpeedHQ/action
  dependency-version: 4.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 16:03:20 +02:00
dependabot[bot] 63f33a081f chore(deps): bump taiki-e/install-action from 2.68.26 to 2.74.0
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.68.26 to 2.74.0.
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Commits](https://github.com/taiki-e/install-action/compare/v2.68.26...v2.74.0)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.74.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 15:42:51 +02:00
Damir Jelić 8b762b04df ci: Install cargo-llvm-cov explicitly for the coverage action as well 2026-04-14 15:05:28 +02:00
Ivan Enderlin a9ef675b1c chore(sdk): Move `insert_sent_event_from_send_queue. 2026-04-14 14:45:14 +02:00
Ivan Enderlin e69bb96144 test(integration): Fix the test_local_echo_to_send_event_has_encryption_info test.
This test forgot to subscribe to the Event Cache, hence the result
was partially okay. It was working by luck before. With the previous
commits, it was not possible to work without the Event Cache being
listening to the sync.
2026-04-14 14:45:14 +02:00
Ivan Enderlin 63b8fc8b47 test: Adjust tests according to previous patches.
This patch adjust tests since the Event Cache ignores events from the
Send Queue if the cache is empty. It mostly impacts the tests as this
scenario is pretty rare in real world use cases.
2026-04-14 14:45:14 +02:00
Ivan Enderlin d68879d0aa test(sdk): Test Send Queue inserts in the Event Cache as expected. 2026-04-14 14:45:14 +02:00
Ivan Enderlin 1afebd6d4e fix(sdk): Events from the Send Queue are inserted in the Event Cache if and only if it is no empty.
This patch fixes a bug where inserting an event from the Send Queue in
an empty Event Cache will break the back-pagination logic. Indeed, the
detection of the start of the timeline during the back-pagination is
conditioned to the emptiness of the cache:

- if there is no gap, and if the cache is not empty, then we consider
  the start of the timeline has been reached.

However, if an event from the Send Queue has been inserted, with no
previous batch token (because none can be computed at this step), no gap
is present and the cache won't be empty, so… this is wrongly assumed to
be the start of the timeline.

The solution to this problem is to insert the event from the Send Queue
if the cache is not empty.
2026-04-14 14:45:14 +02:00
Damir Jelić db4c1f8dbd ci: Explicitly state that we want cargo-hack installed 2026-04-14 14:44:58 +02:00
dependabot[bot] c1b89a2751 chore(deps): bump crate-ci/typos from 1.44.0 to 1.45.0
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.44.0 to 1.45.0.
- [Release notes](https://github.com/crate-ci/typos/releases)
- [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crate-ci/typos/compare/631208b7aac2daa8b707f55e7331f9112b0e062d...cf5f1c29a8ac336af8568821ec41919923b05a83)

---
updated-dependencies:
- dependency-name: crate-ci/typos
  dependency-version: 1.45.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 14:43:37 +02:00
Damir Jelić 9d39e4bae8 ci: Explicitly state which tool we want to install, namely nextest 2026-04-14 13:55:26 +02:00
Ivan Enderlin 936f173e6f doc(sdk): Add #6396 in the CHANGELOG.md. 2026-04-14 12:51:02 +02:00
Ivan Enderlin 9eb4a5a24c test(sdk): Add a test to ensure a redacted latest event is removed. 2026-04-14 12:51:02 +02:00
Ivan Enderlin 49bba4d471 test(sdk): A TODO has been resolved. 2026-04-14 12:51:02 +02:00
Ivan Enderlin f23deacec4 fix(sdk): Do not update the LatestEventValue if its event ID matches the previous value.
This patch updates the logic to update a `LatestEventValue`. We still
can't compare two `LatestEventValue` because the type doesn't implement
`PartialEq`. However, we can use the `EventId` in some case.

It fixes https://github.com/matrix-org/matrix-rust-sdk/issues/6381.
2026-04-14 12:51:02 +02:00
Jorge Martín 9c28ee7041 feat(ffi): Add ffi::Client::set_avatar_url
This method uses `Account::set_avatar_url` under the hood to update the user's avatar to the provided MXC url
2026-04-14 12:08:47 +02:00
dependabot[bot] 5d420b683f chore(deps): bump bnjbvr/cargo-machete
Bumps [bnjbvr/cargo-machete](https://github.com/bnjbvr/cargo-machete) from b81ce1560c5fbd0210cb66d88bf210329ff04266 to e82b6af0d3610e62ddf49bf7c62e662d7e31db0d.
- [Release notes](https://github.com/bnjbvr/cargo-machete/releases)
- [Changelog](https://github.com/bnjbvr/cargo-machete/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bnjbvr/cargo-machete/compare/b81ce1560c5fbd0210cb66d88bf210329ff04266...e82b6af0d3610e62ddf49bf7c62e662d7e31db0d)

---
updated-dependencies:
- dependency-name: bnjbvr/cargo-machete
  dependency-version: e82b6af0d3610e62ddf49bf7c62e662d7e31db0d
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 11:12:08 +02:00
dependabot[bot] 2d5b95e45e chore(deps): bump rand from 0.10.0 to 0.10.1
Bumps [rand](https://github.com/rust-random/rand) from 0.10.0 to 0.10.1.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.10.0...0.10.1)

---
updated-dependencies:
- dependency-name: rand
  dependency-version: 0.10.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 09:49:29 +02:00
Benjamin Bouvier 3d29db5ebb refactor(tests): simplify timeline/reactions tests to remove custom respond_with 2026-04-13 17:20:57 +02:00
Benjamin Bouvier 8e041d6958 refactor(tests): use MatrixMockServer even more in room_list_service 2026-04-13 17:20:57 +02:00
Benjamin Bouvier c02d0f1d01 refactor(tests): make more use of the MatrixMockServer in ui tests 2026-04-13 17:20:57 +02:00
Benjamin Bouvier 2da262e56c refactor(tests): make use of MatrixMockServer in other room_list_service tests 2026-04-13 17:20:57 +02:00
Benjamin Bouvier 31e4657718 refactor(tests): make use of MatrixMockServer in room_list_service 2026-04-13 17:20:57 +02:00
Benjamin Bouvier 5b2fe3cf47 refactor(tests): make use of MatrixMockServer in notification_client 2026-04-13 17:20:57 +02:00
Benjamin Bouvier 49d7d4528d refactor(tests): make use of MatrixMockServer in sync_service 2026-04-13 17:20:57 +02:00
Benjamin Bouvier 3d7e505530 refactor(tests): make use of MatrixMockServer in encryption_sync_service 2026-04-13 17:20:57 +02:00
Benjamin Bouvier 56d4163982 refactor(tests): make use of MatrixMockServer in timeline/pagination 2026-04-13 17:20:57 +02:00
Benjamin Bouvier 4cafc48cc4 refactor(tests): make use of MatrixMockServer in timeline/focus_event 2026-04-13 17:20:57 +02:00
Benjamin Bouvier 8ea55b30bc refactor(tests): make use of MatrixMockServer in timeline/sliding_sync
We could do better, and have even a specialized sliding sync endpoint
helper, but that'll be for another day :)
2026-04-13 17:20:57 +02:00
Benjamin Bouvier d438ee2ca0 refactor(tests): add a test helper to send with a delay, use it in timeline/queue 2026-04-13 17:20:57 +02:00
Benjamin Bouvier a3fe9eef12 refactor(tests): make use of MatrixMockServer in timeline/queue 2026-04-13 17:20:57 +02:00
Benjamin Bouvier 60056ba205 refactor(tests): make use of MatrixMockServer in timeline/subscribe 2026-04-13 17:20:57 +02:00