Commit Graph

15292 Commits

Author SHA1 Message Date
Jorge Martín
5f4912c273 Use suggestions to simplify the callback blocks 2026-05-26 15:01:29 +02:00
Jorge Martín
662e2fe872 WIP 2026-05-26 12:18:05 +02:00
Mauro Romito
3a44b50518 docs: changelog added 2026-05-26 12:33:08 +03:00
Mauro Romito
55262807e1 feat (bindings): expose tile_server to FFI 2026-05-26 12:33:08 +03:00
dependabot[bot]
235151de39 chore(deps): bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6
Bumps [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) from 0.5.3 to 0.5.6.
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](b1d7e1fb5d...5f14fd08f7)

---
updated-dependencies:
- dependency-name: zizmorcore/zizmor-action
  dependency-version: 0.5.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-26 10:33:30 +02:00
dependabot[bot]
460dcbbf02 chore(deps): bump crate-ci/typos from 1.46.1 to 1.46.2
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.46.1 to 1.46.2.
- [Release notes](https://github.com/crate-ci/typos/releases)
- [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md)
- [Commits](5374cbf686...aca895bf05)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-26 10:26:54 +02:00
Jorge Martín
7b6cc76361 Update rpassword to v7.5.1 to fix clippy
This was happening for non-linux targets. Fixed in https://github.com/conradkleinespel/rpassword/pull/128
2026-05-26 10:24:40 +02:00
dependabot[bot]
13247c3201 chore(deps): bump taiki-e/install-action from 2.77.6 to 2.79.1
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.77.6 to 2.79.1.
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](c070f87102...b550161ef8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-26 09:43:47 +03:00
Ivan Enderlin
1205c2b212 doc(sdk): Add the changelog file. 2026-05-22 11:23:24 +02:00
Ivan Enderlin
eb6d5c330c test(sdk): Add a test to ensure no Client cyclic reference with ThreadSubscriptionCatchup. 2026-05-22 11:23:24 +02:00
Ivan Enderlin
b01ce21a24 fix(sdk): Remove a cyclic reference of Client in ThreadSubscriptionCatchup.
This patch fixes cyclic reference of `Client` in
`ThreadSubscriptionCatchup`.

`ThreadSubscriptionCatchup` starts a task that call
`thread_subscriptions_catchup_task`. This function captures a clone of
`ThreadSubscriptionCatchup` (why not…) which contains a `WeakClient`,
all good, no cycle here! However, the real task (not the function)
captures `Client` to call `enabled_thread_subscriptions` to know
if the function `thread_subscriptions_catchup_task` must be called.
Consequently, the task captures a clone of `Client`, boom, we have
a cycle.

This patch fixes the problem by spawning the task if and only if
`Client::enabled_thread_subscriptions` returns `Ok(true)`. This check is
done outside the task. It seems saner and avoid creating this cycle.

Consequently, the `ThreadSubscriptionCatchup::new` method becomes
`async`, which is perfectly fine as it was already wrapper inside an
`async` block when initialised by the `Client`.
2026-05-22 11:23:24 +02:00
Michael Goldenberg
b847983dbf refactor(base): hold state store lock while processing sync response
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net>
2026-05-21 12:34:28 +02:00
Daniel Anderson
8675cb2841 feat(ffi): expose append parameter on Client::set_pusher
Forwards the new SDK append flag across the FFI boundary so multi-profile
clients can register pushers without overwriting each other.

Breaking change: Client::set_pusher now takes an append: bool parameter.

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>
2026-05-21 12:53:08 +03:00
Daniel Anderson
d3c499ddbc feat(sdk): expose append parameter on Pusher::set
Forwards the Matrix spec's append flag on POST /_matrix/client/v3/pushers/set
through Pusher::set. When true, the homeserver keeps any existing pusher
with the same app_id and pushkey registered for other users instead of
replacing it. Needed for multi-profile clients on a single device.

Breaking change: Pusher::set now takes an append: bool parameter.

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>
2026-05-21 12:53:08 +03:00
ganfra
4ca424f5f2 revert "only start with a timeline reset diff if the timeline isn't empty" 2026-05-21 09:40:09 +02:00
Damir Jelić
82c24a891b fix(sdk): Make the pinned events sorting deterministic
The previous sorting logic relied on SystemTime::now, which introduces
non-deterministic behavior which might result in a panic.
2026-05-20 16:54:20 +02:00
Hugh Nimmo-Smith
3372ca3577 test(sdk): explicitly assert homserver URL swap for QR login 2026-05-20 15:56:33 +02:00
Daniel Anderson
10c0a86e99 feat(ffi): expose RoomInfo::fully_read_event_id
`m.fully_read` is now available on the FFI `RoomInfo` record

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>
2026-05-20 11:46:20 +03:00
Daniel Anderson
a80fa910da feat(base): expose m.fully_read event ID on RoomInfo
Persist `m.fully_read` on `BaseRoomInfo` and expose it
on `RoomInfo::fully_read_event_id` and `Room::fully_read_event_id`.

The `m.fully_read` response processor now stores the event ID
on the room info and emits `RoomInfoNotableUpdateReasons::FULLY_READ`

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>
2026-05-20 11:46:20 +03:00
Daniel Anderson
4b1ae064c7 feat(base): add FULLY_READ notable update reason
Add `RoomInfoNotableUpdateReasons::FULLY_READ`, used for
when the `m.fully_read` marker for a room changes.

Breaking change: the backing bitflag widens from `u8` to `u16`
for the new flag to not alter the existing bit positions.

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>
2026-05-20 11:46:20 +03:00
Jorge Martín
4a26af89f2 feat(ffi): Expose SqliteStoreBuilder::key in the FFI layer
This allows clients to provide a raw key instead of a passphrase for the key used to encrypt and decrypt data in the store DBs.

Using a raw key with enough entropy should be safe, and we can skip the key derivation performed in the passphrase, which slows down session restoration (it's now 50% faster in my local tests).
2026-05-19 16:05:15 +02:00
Ivan Enderlin
7677f09099 doc: Update the PR template to match the recent changelog modifications. 2026-05-19 10:49:12 +02:00
dependabot[bot]
80ecdc17c8 chore(deps): bump crate-ci/typos from 1.46.0 to 1.46.1
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.46.0 to 1.46.1.
- [Release notes](https://github.com/crate-ci/typos/releases)
- [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md)
- [Commits](bbaefadf97...5374cbf686)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-19 09:29:49 +02:00
dependabot[bot]
56a37273c7 chore(deps): bump EmbarkStudios/cargo-deny-action from 2.0.17 to 2.0.18
Bumps [EmbarkStudios/cargo-deny-action](https://github.com/embarkstudios/cargo-deny-action) from 2.0.17 to 2.0.18.
- [Release notes](https://github.com/embarkstudios/cargo-deny-action/releases)
- [Commits](91bf2b620e...6c8f9facfa)

---
updated-dependencies:
- dependency-name: EmbarkStudios/cargo-deny-action
  dependency-version: 2.0.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-19 09:25:36 +02:00
dependabot[bot]
10c98c77fd chore(deps): bump taiki-e/install-action from 2.76.0 to 2.77.6
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.76.0 to 2.77.6.
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](711e1c3275...c070f87102)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-19 09:25:09 +02:00
dependabot[bot]
3a1806a900 chore(deps): bump CodSpeedHQ/action from 4.15.0 to 4.15.1
Bumps [CodSpeedHQ/action](https://github.com/codspeedhq/action) from 4.15.0 to 4.15.1.
- [Release notes](https://github.com/codspeedhq/action/releases)
- [Changelog](https://github.com/CodSpeedHQ/action/blob/main/CHANGELOG.md)
- [Commits](c381be0bfd...3194d9a39c)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-19 09:24:47 +02:00
Ivan Enderlin
b6d0f8a0a7 chore: Fix rumdl errors and warnings by hand. 2026-05-18 15:05:52 +02:00
Ivan Enderlin
7d31912f0d chore: Run rumdl check --fix. 2026-05-18 15:05:52 +02:00
Ivan Enderlin
e8fe0f3642 chore: Configure rumdl.
This patch adds configuration for `rumdl` (https://github.com/rvben/rumdl).
2026-05-18 15:05:52 +02:00
Ivan Enderlin
56de50cef4 doc: Fix changelog entries format.
The list style is no more necessary.
matrix-sdk-ffi/20260519
2026-05-18 09:06:24 +02:00
Damir Jelić
929551152e chore: Remove the rustrover image as it isn't used anymore 2026-05-15 16:23:59 +02:00
Kévin Commaille
edb5d41597 refactor(sdk): Make RumaApiError a type alias of UiaaResponse
They have similar variants containing the same data so it's not useful
to have separate types.

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-05-15 12:04:54 +02:00
Kévin Commaille
6a551f31e2 refactor(sdk): Simplify some error matching
By using helper methods on error types.

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-05-15 12:04:54 +02:00
Kévin Commaille
44a12a7849 refactor(sdk): Use upstream method to match unsupported endpoint error
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2026-05-15 12:04:54 +02:00
Artem Pylypchuk
c895e92c26 fix: manually drop room if it's last in Arc 2026-05-15 11:57:23 +02:00
Jorge Martín
7c13b60e28 fix: Refresh timeline items when their sender's avatar URL changes
This is similar to what happens when a user display name changes, its ambiguity is calculated and if it changes, it reloads the associated timeline events.

In fact, this change tries to follow the same strategy as `AmbiguityCache`.
2026-05-15 11:56:27 +02:00
Damir Jelić
e5a50089c2 chore: Migrate changelogs to towncrier fragments 2026-05-15 11:15:38 +02:00
Damir Jelić
2a8d75e43f chore: Add the changelog fragment directories 2026-05-14 15:56:14 +02:00
Damir Jelić
3e34794147 chore: Update our contributing guide for the new changelog format 2026-05-14 15:56:14 +02:00
Damir Jelić
8fb918e062 chore: Update our changelogs so towncrier knows where to insert changelogs 2026-05-14 15:56:14 +02:00
Damir Jelić
045d178d63 chore: Update the release hook to call towncrier 2026-05-14 15:56:14 +02:00
Damir Jelić
36658b4e8c chore: Add a towncrier config 2026-05-14 15:56:14 +02:00
Benoit Marty
c253114b05 fix: can_be_replied_to() returns false for LiveLocation events. 2026-05-13 13:38:12 +01:00
dependabot[bot]
f50309786e chore(deps): bump taiki-e/install-action from 2.75.23 to 2.76.0
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.75.23 to 2.76.0.
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](481c34c1cf...711e1c3275)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-13 10:24:24 +02:00
dependabot[bot]
32faffeca7 chore(deps): bump rpassword from 7.4.0 to 7.5.0
Bumps [rpassword](https://github.com/conradkleinespel/rpassword) from 7.4.0 to 7.5.0.
- [Release notes](https://github.com/conradkleinespel/rpassword/releases)
- [Commits](https://github.com/conradkleinespel/rpassword/compare/v7.4.0...v7.5.0)

---
updated-dependencies:
- dependency-name: rpassword
  dependency-version: 7.5.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-13 10:23:41 +02:00
Stefan Ceriu
6792416efb chore(timeline): replace duplicate read receipt panic with plain error 2026-05-12 17:25:48 +03:00
Stefan Ceriu
2497f0ebd3 chore(stores): switch from pause/resume semantics to close and reopen ones 2026-05-12 17:25:48 +03:00
Stefan Ceriu
e72841ab79 change(stores): remove the default pause/resume implementations and replace them with concrete ones. 2026-05-12 17:25:48 +03:00
Stefan Ceriu
3f6887a69e chore(doc): update the documentation around pausing an resuming stores 2026-05-12 17:25:48 +03:00
Stefan Ceriu
e46cd9870d feat(client): expose a client pause/resume mechanism throughout the SDK
This patch exposes the pause/resume mechanism for SDK stores all the way up to
the FFI `Client`, so apps can temporarily release SQLite resources when moving
to the background and re-acquire them on resume.

The main use case is iOS backgrounding, where keeping SQLite file descriptors and
locks open can contribute to `0xdead10cc` terminations by the operating system.
2026-05-12 17:25:48 +03:00