Commit Graph

273 Commits

Author SHA1 Message Date
Kévin Commaille
644c5e8a4c Upgrade Ruma to commit after PushCondition breaking changes
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-04-01 10:20:21 +01:00
Kévin Commaille
5936a7285f Upgrade Ruma to commit after push Action breaking changes
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-04-01 10:20:21 +01:00
mgoldenberg
b65e450813 Support TLS v1.3 on all platforms (#6053)
**Note:** _this pull request has a companion pull request in the
[`complement-crypto`](https://github.com/matrix-org/complement-crypto/pull/229)
repository, which must be merged in conjunction with this one._

_Before merging, this should be tested in conjunction with the Element X
iOS client to ensure that TLS v1.3 is working properly._ @stefanceriu
has agreed to work on this.

## Overview

The primary change in this pull request upgrades the `reqwest`
dependency to its latest version, which defaults to using `rustls` with
support for `rustls-platform-verifier` instead of `native-tls` (see
[`reqwest@0.13.0`](https://github.com/seanmonstar/reqwest/releases/tag/v0.13.0)).
The benefit here is that `rustls` supports TLS v1.3 on all platforms,
whereas [`native-tls` does
not](https://github.com/sfackler/rust-native-tls/pull/278).

Additionally, this pull request makes `rustls` the default TLS
implementation in all the crates in this repository.

This will be particularly helpful with element-hq/element-x-ios#786.

## Changes

- `reqwest` bumped to `0.13.1`
- The API for adding/replacing certificates has changed a bit, so this
required some updating in `HttpSettings::make_client`
- `oauth2-reqwest` added in favor of `oauth2/reqwest` 
    - This is required in order to be compatible with `reqwest^0.13`
- _**`oauth2-reqwest` is currently in alpha release, so it probably
makes sense to let this stabilize a bit.**_ For details, see
https://github.com/ramosbugs/oauth2-rs/issues/333#issuecomment-3906712203.
- `getrandom` bumped to `0.3.4`
    - This is required in order to be compatible with `oauth2@5.1.0`
- `proptest` bumped to `1.9.0`
    - This is required in order to be compatible with `getrandom@0.3.4` 
- Make `rustls` the default TLS implementation

## Questions

### Mirror feature flag names?

A number of feature flags have been replaced in the dependencies above.

1. _**`reqwest/rustls-tls` => `reqwest/rustls`**_ - this is simply a
name change, but is semantically identical (see
[`reqwest@0.13.0`](https://github.com/seanmonstar/reqwest/releases/tag/v0.13.0)).
2. _**`getrandom/js` => `getrandom/wasm_js`**_ - the semantics here have
changed slightly, but it seems to just make it easier to enable the
`wasm_js` backend (see
[`getrandom@0.3.4`](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md#major-change-to-wasm_js-backend)).

At any rate, I have updated references to these flags in each of the
various `Cargo.toml` files, but have not changed the names of our
exposed features to mimic those in the dependencies.

Any thoughts or preferences on whether to mirror those names? That
would, of course, result in a breaking change.

### Default to using `rustls`? Deprecate `native-tls`?

Now that the dependencies have all been bumped, we can use `rustls` on
all platforms. Should this be the new default given that `native-tls`
will very likely never support TLS v1.3 on Apple devices? And should
`native-tls` be deprecated as a result?

**UPDATE:** _The consensus here seems to be that we should default to
using `rustls`, but that `native-tls` should still be available._

---
Fixes #5800.


- [ ] Public API changes documented in changelogs (optional)

Signed-off-by: Michael Goldenberg <m@mgoldenberg.net>

---------

Signed-off-by: Michael Goldenberg <m@mgoldenberg.net>
2026-03-10 13:38:18 +01:00
Kévin Commaille
7ec331c842 testing: Create realistic modern event IDs in EventFactory
As a fallback when the ID is not provided when constructing the event.
It allows to work with data that looks like what we would get in
production, which is important for benchmarks.

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-03-06 15:00:45 +01:00
Stefan Ceriu
17a9ab41e4 chore(tests): add event factory method for building MSC3672 beacon_info state events 2026-03-05 15:55:31 +02:00
Kévin Commaille
12b1102ca9 Upgrade Ruma after breaking change about Reply relations
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-03-04 10:30:25 +00:00
Kévin Commaille
81286ad1e7 Upgrade Ruma after breaking change about EventId constructors
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-03-04 10:30:25 +00:00
Valere Fedronic
cc8d6d8482 bindings: Support audio/video intent in rtc notification event content (#6207)
<!-- description of the changes in this PR -->

Updates ruma from
289bee8797
to
89dab44660
see
4250d65756

Depends on this ruma PR github.com/ruma/ruma/pull/2383

Support for reading the intent from the notification event
(m.call.intent in notification event as per
https://github.com/matrix-org/matrix-spec-proposals/pull/4075)

Parity with js-sdk implementation

bd6547c081/src/matrixrtc/types.ts (L150)

- [ ] I've documented the public API Changes in the appropriate
`CHANGELOG.md` files.
- [ ] I've read [the `CONTRIBUTING.md`
file](https://github.com/matrix-org/matrix-rust-sdk/blob/main/CONTRIBUTING.md),
notably the sections about Pull requests, Commit message format, and AI
policy.
- [ ] This PR was made with the help of AI.

<!-- Sign-off, if not part of the commits -->
<!-- See CONTRIBUTING.md if you don't know what this is -->
Signed-off-by:
2026-03-02 15:31:29 +01:00
Kévin Commaille
5d18820120 refactor: Use owned_*_id! macros rather than *_id!().to_owned()
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-02-23 14:29:55 +01:00
Kévin Commaille
1dbd2caeb2 testing: Remove once_cell dependency
Use the types that were stabilized in the standard library instead.

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-02-23 10:10:14 +00:00
Benjamin Bouvier
a6663718d0 refactor(event factory): simplify tag() helper 2026-02-18 10:57:04 +01:00
Benjamin Bouvier
72c6dc8e08 refactor(test): get rid of RoomAccountDataTestEvent 2026-02-18 10:57:04 +01:00
Benjamin Bouvier
961edaf4b9 test(spaces): add an EventFactory method to create an m.space_order event 2026-02-18 10:57:04 +01:00
Benjamin Bouvier
6d2f787623 test(sync_builder): make add_account_data accept impl Into<Raw<...>>
Change JoinedRoomBuilder::add_account_data() to accept any type that
implements Into<Raw<AnyRoomAccountDataEvent>>, preparing for migration
away from RoomAccountDataTestEvent enum.
2026-02-18 10:57:04 +01:00
Benjamin Bouvier
e3042e664b test: delete sync_events.rs
Remove the sync_events module entirely now that all usages have been
migrated to EventFactory.
2026-02-18 10:57:04 +01:00
Benjamin Bouvier
ed4454fcbb test(event_factory): add presence() helper and PresenceBuilder 2026-02-18 10:57:04 +01:00
Benjamin Bouvier
3749c9c616 test(event_factory): add tag() helper for m.tag events 2026-02-18 10:57:04 +01:00
Benjamin Bouvier
b95b0ba1c4 test(event_factory): add room account data support
Add support for room account data events in EventFactory:
- Add RoomAccountData format to EventFormat enum
- Add From implementations for Raw<AnyRoomAccountDataEvent>
- Add room_account_data() generic method
- Add fully_read() helper for m.fully_read events
- Add marked_unread() helper for m.marked_unread events
2026-02-18 10:57:04 +01:00
Benjamin Bouvier
4c6d5f9654 test: replace ENCRYPTION_CONTENT usages with EventFactory
Replace all usages of ENCRYPTION_CONTENT and
ENCRYPTION_WITH_ENCRYPTED_STATE_EVENTS_CONTENT static values
with EventFactory::room_encryption().into_content() calls.

This uses the new into_content() method to get just the event
content for HTTP response mocking.
2026-02-18 10:57:04 +01:00
Benjamin Bouvier
6b99f37268 test(event_factory): add into_content() method to EventBuilder
Add a generic method to EventBuilder that returns just the event
content as a serde_json::Value. This is useful when mocking HTTP
responses that return event content rather than full events.
2026-02-18 10:57:04 +01:00
Benjamin Bouvier
818d0ef233 test: remove unused static JSON values from sync_events.rs 2026-02-18 10:57:04 +01:00
Benjamin Bouvier
079c8175f2 refactor(test): remove the PresenceTestEvent enum that's unused 2026-02-16 10:53:31 +01:00
Benjamin Bouvier
64163c32f6 refactor(test): add an invite_room_state method to the EventBuilder
So we can pass the room state when receiving an invite, using more event
factory!
2026-02-16 10:53:31 +01:00
Benjamin Bouvier
bcb84cc27c refactor(test): remove StrippedStateTestEvent 2026-02-16 10:53:31 +01:00
Benjamin Bouvier
e299adbdeb refactor(test): remove more unused test event variants 2026-02-16 10:53:31 +01:00
Benjamin Bouvier
2ab1d8a985 refactor(test): remove StateTestEvent \o/\o/\o/ 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
d71387e7f7 refactor(test): remove StateTestEvent::Custom and replace it with usage of the event factory
There's one case where we want to create a custom join rule, and thus
must parse directly from JSON, but the rest can reuse helpers that
already exist.
2026-02-16 10:26:11 +01:00
Benjamin Bouvier
fa638ae630 refactor(test): remove StateTestEvent::EncryptionWithEncryptedStateEvents 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
4965800a0a refactor(test): remove StateTestEvent::RoomName and use the event factory instead 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
f7b55bfb5c refactor(test): remove StateTestEvent::PowerLevels and use the event factory instead
Since it's always using the default power levels, provide a default ctor
for it, and use it throughout this commit.
2026-02-16 10:26:11 +01:00
Benjamin Bouvier
1fdf23a456 refactor(test): remove StateTestEvent::MemberInvite/Leave 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
5c1ee281a9 refactor(test): remove StateTestEvent variants that were unused 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
f4b401ac58 refactor(test): remove StateTestEvent::MemberAdditional and use the EventFactory instead 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
47e4c44d1b refactor(test): remove StateTestEvent::Member and use the event factory instead 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
1ba8704941 refactor(test): remove StateTestEvent::JoinRules 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
7f13f86912 refactor(test): remove StateTestEvent::HistoryVisibility 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
622825f099 refactor(test): remove StateTestEvent::Encryption 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
16e50ee484 refactor(test): remove StateTestEvent::Create and replace it with the event factory 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
7dc76fa423 refactor(test): remove StateTestEvent::Aliases which was simply unused 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
db3308981b refactor(test): remove StateTestEvent::Alias and use the event factory instead 2026-02-16 10:26:11 +01:00
Benjamin Bouvier
e7d2c729c2 chore(test): remove unused test JSONs 2026-02-12 13:00:13 +01:00
Benjamin Bouvier
ce0bba5e6d test: make more use of the EventFactory for the room topic
And get rid of test events. This implied adding a way to provide the
previous content of a state event, in the event factory.
2026-02-11 09:48:46 +01:00
Benjamin Bouvier
7fbb2ddae1 test: add a new method for the state pinned events in the event factory 2026-02-10 18:41:15 +01:00
Ivan Enderlin
3ff9b55077 chore: Add more default-features = false to more deps. 2026-02-05 09:02:29 +01:00
Kévin Commaille
4feaa0ba49 Upgrade Ruma
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-01-30 10:16:06 +01:00
Mauro Romito
a46b006473 refactor: added the check for the joined_members_count inside the test_leave 2026-01-20 08:41:49 +01:00
Damir Jelić
742a0db07b chore: Remove mentions of the 0.15 release
The 0.15.0 release was a misfire so we're skipping this version number.
2025-12-04 09:59:04 +01:00
Damir Jelić
4701faf039 chore: Release matrix-sdk version 0.16.0 2025-12-04 09:59:04 +01:00
Damir Jelić
f4fef6e995 chore: Fix the dates of the 0.15.0 release 2025-11-27 10:07:41 +01:00
Damir Jelić
850b7dde6d chore: Release matrix-sdk version 0.15.0 2025-11-26 15:44:26 +01:00