Commit Graph
26331 Commits
Author SHA1 Message Date
Quentin Gliech 0e0fc9e4e7 Merge #20450: Allow loading the synthetic join of a Server Announcement room with /context 2026-11-03 09:26:55 +01:00
Quentin Gliech e409dcc5a7 Merge #20448: Server Announcement Room Tags
# Conflicts:
#	synapse/handlers/sync.py
2026-11-03 09:26:34 +01:00
Quentin Gliech 206770a461 Merge #20423: Allow reading Server Announcement history outside of sync 2026-11-03 09:26:04 +01:00
Quentin Gliech ac15617be5 Merge #20427: Handle read receipts in Server Announcement rooms 2026-11-03 09:26:04 +01:00
Quentin Gliech 9dc7f4eeba Merge #20413: Deliver Server Announcements over Sliding Sync 2026-11-03 09:26:04 +01:00
Quentin Gliech 0229106ab7 Merge #20412: Deliver Server Announcement over Legacy Sync 2026-11-03 09:24:41 +01:00
Eric Eastwood 33aa953879 Merge branch 'master' into develop 2026-11-02 10:21:32 -06:00
Eric Eastwood 547004446e Merge branch 'release-v1.164' 2026-11-02 10:21:26 -06:00
Eric Eastwood c3a58b8a6a 1.164.2 v1.164.2 2026-11-02 10:01:57 -06:00
Quentin Gliech e3e847083e [v1.164] Restore the unstable MSC2965 /auth_metadata endpoint (#20460)
This is a partial revert of
https://github.com/element-hq/synapse/pull/20143 to restore the unstable
`/auth_metadata` C-S API endpoint.

The details on why are in #20459 

Since this is affecting live clients (Rust SDK-based clients including
Element X iOS and Android), this PR is against the 1.164 release branch
as we plan to release 1.164.2 with this fix.

The CI failures are unrelated and were already fixed on `develop` in
https://github.com/element-hq/synapse/pull/20386. Please look at
`develop` counterpart of this PR
https://github.com/element-hq/synapse/pull/20461 for the green CI
2026-11-02 16:55:22 +01:00
Paul Chobert a50d068a38 Explain why a room can be missing from the fetched events 2026-10-30 22:07:48 +01:00
dependabot[bot] cc172f7ac7 Bump tornado from 6.5.9 to 6.6 (#20437) 2026-10-30 15:47:50 -05:00
Paul Chobert e6cb44c1da Rename announcement_room_ids to synthetic_join_announcement_room_ids 2026-10-30 21:39:46 +01:00
Paul Chobert a5c6cb7a44 Move get_first_non_state_event_positions to the stream store, skipping outliers 2026-10-30 21:24:06 +01:00
Johannes MarbachandDevon Hudson 1a5fec63e3 Remove duplicative early exit in sliding sync processing (#20431)
As suggested in
https://github.com/element-hq/synapse/pull/20363#discussion_r4406785188.

### Pull Request Checklist

<!-- Please read
https://element-hq.github.io/synapse/latest/development/contributing_guide.html
before submitting your pull request -->

* [x] Pull request is based on the develop branch
* [x] Pull request includes a [changelog
file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog).
The entry should:
- Be a short description of your change which makes sense to users.
"Fixed a bug that prevented receiving messages from other servers."
instead of "Moved X method from `EventStore` to `EventWorkerStore`.".
  - Use markdown where necessary, mostly for `code blocks`.
  - End with either a period (.) or an exclamation mark (!).
  - Start with a capital letter.
- Feel free to credit yourself, by adding a sentence "Contributed by
@github_username." or "Contributed by [Your Name]." to the end of the
entry.
* [x] [Code
style](https://element-hq.github.io/synapse/latest/code_style.html) is
correct (run the
[linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters))

---------

Co-authored-by: Devon Hudson <devon.dmytro@gmail.com>
2026-10-30 18:24:03 +00:00
Paul ChobertandQuentin Gliech 8817b384f4 Invalidate cache for all potential arguments
Co-authored-by: Quentin Gliech <quenting@element.io>
2026-10-30 19:13:14 +01:00
Olivier 'reivilibre 0a88b4287e Fix MSC4354 Sticky Events that expired during sync processing being returned as expired events in the sticky section of the sync response. (#20349)
Part of: MSC4354 (Experimental Feature tracking issue #19409)

This is a bit of an edge case, but nonetheless good to handle.

The included regression tests failed before the fix.

- Fix sticky events that expired during sync processing being returned

  See discussion:

https://github.com/matrix-org/matrix-spec-proposals/pull/4354#discussion_r4209309068

  See MSC cautionary note:

https://github.com/matrix-org/matrix-spec-proposals/commit/9915d50437ac494efdd91244451f46fd1934168c

---------

Signed-off-by: Olivier 'reivilibre <oliverw@matrix.org>
2026-10-30 17:29:14 +00:00
Paul Chobert ba5267d88f Serve the synthetic join of announcement rooms over /context
The event ID given to non-members in /sync could not be loaded, as the event
is never persisted. Return it at the position of the room's create event, for
the requesting user only.
2026-10-30 17:00:07 +01:00
Paul Chobert 5812546ab8 Merge remote-tracking branch 'upstream/barodeur/srv-announcements-sync-legacy' into barodeur/srv-announcements-synthetic-membership-history 2026-10-30 17:00:07 +01:00
Johannes Marbach 25492acda3 Stabilise MSC4143 (#20425)
This stabilizes the implementation of
https://github.com/matrix-org/matrix-spec-proposals/pull/4143 which
includes the following:

- Stable `/rtc/transports` as per
https://github.com/matrix-org/matrix-spec-proposals/pull/4143 and
https://github.com/matrix-org/matrix-spec-proposals/pull/4195. The
unstable endpoint is retained for backwards compatibility.
- Adding `m.rtc.slot` events to the state events retained during room
upgrades.

### Pull Request Checklist

<!-- Please read
https://element-hq.github.io/synapse/latest/development/contributing_guide.html
before submitting your pull request -->

* [x] Pull request is based on the develop branch
* [x] Pull request includes a [changelog
file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog).
The entry should:
- Be a short description of your change which makes sense to users.
"Fixed a bug that prevented receiving messages from other servers."
instead of "Moved X method from `EventStore` to `EventWorkerStore`.".
  - Use markdown where necessary, mostly for `code blocks`.
  - End with either a period (.) or an exclamation mark (!).
  - Start with a capital letter.
- Feel free to credit yourself, by adding a sentence "Contributed by
@github_username." or "Contributed by [Your Name]." to the end of the
entry.
* [x] [Code
style](https://element-hq.github.io/synapse/latest/code_style.html) is
correct (run the
[linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters))
2026-10-30 15:47:01 +00:00
Paul Chobert d3830e68b7 Deliver and protect the m.server_notice tag in announcement rooms 2026-10-30 16:46:09 +01:00
Eric Eastwood ee91c5fff0 Add support for Ubuntu 26.10 'Stonking Stingray' (#20428)
Fix https://github.com/element-hq/synapse/issues/20040

Associated PR: https://github.com/matrix-org/pkg-repo-configs/pull/32

This PR was written following the instructions in Element's internal
handbook page for [adding a new
distribution](https://handbook.element.io/books/backend-team/page/synapse-debian-packages#bkmrk-adding-a-new-distrib).
2026-10-30 09:30:54 -05:00
Paul Chobert 89d30460b0 Treat synthetic membership as a membership in the tag check 2026-10-30 11:27:41 +01:00
Paul Chobert bbef8a1b10 Only allow tagging currently configured announcement rooms 2026-10-30 11:27:41 +01:00
Paul Chobert 5ea93a5955 Add changelog 2026-10-30 11:27:41 +01:00
Paul Chobert 8ff205b754 Add support for tagging as synthetic member 2026-10-30 10:53:57 +01:00
Paul Chobert f16c09e694 Merge branch 'develop' into barodeur/srv-announcements-history-access 2026-10-29 23:52:40 +01:00
Paul Chobert 9158f4ff4b Explain the server announcement membership override 2026-10-29 23:51:33 +01:00
Paul ChobertandAndrew Morgan 795089e832 Add docstring to ServerAnnouncementsHistoryTestCase._send_relation()
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
2026-10-29 23:50:27 +01:00
Paul Chobert 988e61f91c Keep the world-readable fallback under the except clause 2026-10-29 23:45:41 +01:00
Paul Chobert 2f48ba778e Separate the server announcement case in the docstring 2026-10-29 23:34:50 +01:00
Paul Chobert dddc0c99fe Keep server announcement history readable once the room is unconfigured 2026-10-29 23:15:50 +01:00
Paul Chobert c0f1b5ef9e Test reading server announcement history once the room is unconfigured 2026-10-29 23:15:49 +01:00
Paul Chobert 2b5c81e80f Explain the removed sender test setup 2026-10-29 23:05:55 +01:00
Paul Chobert a65d4b1981 Rename reader test parameter to reader_type 2026-10-29 22:51:23 +01:00
Paul Chobert 90f45d5b99 Merge remote-tracking branch 'upstream/develop' into barodeur/srv-announcements-sync-legacy
# Conflicts:
#	tests/rest/client/test_sync.py
2026-10-29 22:46:12 +01:00
Paul Chobert 450f4fb35f Serialize the synthetic join like other events 2026-10-29 22:34:50 +01:00
Paul Chobert 0c97b2ca0a Deliver room account data changes in announcement rooms 2026-10-29 22:15:09 +01:00
Paul Chobert 407f556b1d Test room account data delivery for non-members of announcement rooms 2026-10-29 22:15:09 +01:00
Raphael Fakhri 56acc229a5 Return identity server errors from third-party invites instead of a 500 (#20401)
Fixes #19257.

When an identity server returns a non-2xx response to
`/_matrix/identity/v2/store-invite` during a third-party invite,
`ask_id_server_for_third_party_invite` lets the `HttpResponseException`
escape. The client receives a 500 `M_UNKNOWN` error and the real cause
(for example, `M_THREEPID_IN_USE`) is lost.

This change catches `HttpResponseException` and converts it with
`to_synapse_error()`, which matches how the other identity server calls
in `IdentityHandler` (bind, `requestToken`) already handle error
responses.

A new test in `ThreepidInviteTestCase` makes the identity server return
a 400 `M_THREEPID_IN_USE` error and checks that the client receives the
same code and errcode. The test fails on `develop` with `500 != 400` and
passes with this change.
2026-10-29 18:43:27 +00:00
Paul Chobert e8482807a7 Explain the first announcement lookup 2026-10-29 19:22:27 +01:00
Paul Chobert 366acefe52 Explain why former members' real membership is removed from announcement rooms 2026-10-29 18:50:33 +01:00
Paul ChobertandQuentin Gliech 0d524eabec Parenthesise the is_announcement argument
Co-authored-by: Quentin Gliech <quenting@element.io>
2026-10-29 18:22:45 +01:00
Paul Chobert 64e993eb4b Explain why former members skip the leave entry on initial sync 2026-10-29 18:15:22 +01:00
Paul Chobert ee2e6fa0c1 Clarify which announcement rooms are included 2026-10-29 17:54:49 +01:00
Paul Chobert 811217b652 Say which since token left_room_ids is relative to 2026-10-29 17:31:46 +01:00
Paul Chobert c20068e6e7 Use the max stream position as the bound for first announcements 2026-10-29 17:24:46 +01:00
Paul Chobert ea92aa352c Send only state changes once the client has the announcement room
Any sync covering a room's first announcement delivers the room with full
state, so a client whose since token is past that announcement already has it.
2026-10-29 17:24:45 +01:00
Erik Johnston eca9a4acd3 Fix regression with lazy membership and concurrenet syncs (#20433)
Broke by #20289. Hopefully fixes element-hq/element-web#35567.

One subtle change in #20289 was that we started to filter rooms with
`full_state` set through the cache. This *should* be safe since none of
the membership events should have been previously sent down the sync.

However, there is a bug with the lazy-loaded member cache when two
concurrent syncs for the same device happens. The updates to the cache
from the handling of one request are immediately seen by the other
request, polluting the cache.

This is a relatively common scenario in Element Web when a user reloads
the page. The sync from before the reload is still being processed when
Synapse receives the initial sync from after the reload.

The full fix to correctly handle overlapping requests is a separate PR,
but this is a stop-gap measure that should help Element Web.
2026-10-29 16:06:13 +00:00
Olivier 'reivilibre b47432bb22 Slightly speed up the 'release artifacts' CI release steps. (#20397)
Small, easy, low-hanging suggestions when wondering how to speed up our
release process.

- CI: Use multithreading in tarball xz compression
It looks like this compression takes about ~2 minutes. If we use 4 cores
then maybe this will be ~30 seconds + nonlinearity overhead.

- CI: Use trial --jobs=6 instead of -j2 for debs
  Other than matching regular CI, this might take off 3~4 min.

Other than that, some caching for the release artifacts step and using
bigger runners to speed up the tests more might help, but those are more
invasive changes.

---------

Signed-off-by: Olivier 'reivilibre <oliverw@matrix.org>
2026-10-29 15:08:26 +00:00