Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
51048b8
Update docs to clarify `outbound_federation_restricted_to` can also b…
MadLittleMods Mar 3, 2026
fd61b8e
Merge branch 'release-v1.149' into develop
sandhose Mar 3, 2026
c2c0587
Bump docker/build-push-action from 6.18.0 to 6.19.2 in the minor-and-…
dependabot[bot] Mar 3, 2026
46c6e0a
Unify Complement developer docs (#19518)
MadLittleMods Mar 3, 2026
699a898
Backgrounds membership updates when changing the avatar or the displa…
MatMaul Mar 5, 2026
6e21f9c
Add unstable federation API for MSC4370 `GET /extremities` (#19314)
turt2live Mar 5, 2026
16125ce
Remove the optional `systemd-python` dependency (#19491)
sandhose Mar 9, 2026
6e1ac55
Expose MSC4354 Sticky Events over the legacy (v3) /sync API. (#19487)
reivilibre Mar 10, 2026
1caa602
Merge branch 'master' into develop
sandhose Mar 10, 2026
59c9e92
Merge branch 'master' into develop
sandhose Mar 11, 2026
ae23928
Fix a bug introduced in v1.26.0 that caused deactivated, erased users…
reivilibre Mar 11, 2026
e300018
Add in-repo Complement test to sanity check Synapse version matches g…
MadLittleMods Mar 11, 2026
18f717d
Bump tornado from 6.5.4 to 6.5.5 (#19551)
dependabot[bot] Mar 12, 2026
8d03a4d
Avoid re-computing the event ID when cloning events. (#19527)
sandhose Mar 12, 2026
3ce5508
Bump quinn-proto from 0.11.12 to 0.11.14 (#19544)
dependabot[bot] Mar 12, 2026
4c475dc
Allow the caching of the /versions and /auth_metadata endpoints (#19530)
sandhose Mar 12, 2026
c0924fb
MSC4140: put delay_id in unsigned data for sender (#19479)
AndrewFerr Mar 16, 2026
eedd4c8
Bump pyjwt from 2.11.0 to 2.12.0 (#19560)
dependabot[bot] Mar 16, 2026
cdd261b
Bump pyopenssl from 25.3.0 to 26.0.0 (#19574)
dependabot[bot] Mar 16, 2026
a71c468
Bump the patches group with 2 updates (#19536)
dependabot[bot] Mar 16, 2026
3aa948c
When Matrix Authentication Service (MAS) integration is enabled, allo…
reivilibre Mar 16, 2026
6254e00
Fix `Build and push complement image` CI job pointing to non-existent…
MadLittleMods Mar 17, 2026
c37a5bb
Restore `localhost/complement-synapse` change from #19523
MadLittleMods Mar 17, 2026
8a6d9a8
Admin API docs: use consistent path param syntax (#19307)
AndrewFerr Mar 17, 2026
8ad7e8a
Add some light labels to the `Processed request` logs (#19548)
MadLittleMods Mar 17, 2026
6a63f0d
Migrate dev dependencies to PEP 735 dependency groups (#19490)
sandhose Mar 17, 2026
7d8e874
1.150.0rc1
sandhose Mar 17, 2026
33d47f4
1.150.0
sandhose Mar 24, 2026
7c54918
Merge remote-tracking branch 'upstream/release-v1.150' into famedly-r…
jason-famedly Mar 27, 2026
b985cc3
wip
jason-famedly Mar 27, 2026
42b3841
ci: bump python-poetry version used in testing to v2.2.0 from v2.1.1
jason-famedly Mar 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ jobs:

- name: Build and push by digest
id: build
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
with:
push: true
labels: |
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/famedly-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
- uses: matrix-org/setup-python-poetry@v2
with:
python-version: "3.13"
poetry-version: "2.1.1"
poetry-version: "2.2.0"
extras: "all"
- run: poetry run scripts-dev/generate_sample_config.sh --check
- run: poetry run scripts-dev/config-lint.sh
Expand Down Expand Up @@ -62,7 +62,7 @@ jobs:
- name: Setup Poetry
uses: matrix-org/setup-python-poetry@v2
with:
poetry-version: "2.1.1"
poetry-version: "2.2.0"
python-version: "3.13"
install-project: "false"

Expand Down Expand Up @@ -93,7 +93,7 @@ jobs:
# To make CI green, err towards caution and install the project.
install-project: "true"
python-version: "3.13"
poetry-version: "2.1.1"
poetry-version: "2.2.0"

# Cribbed from
# https://github.com/AustinScola/mypy-cache-github-action/blob/85ea4f2972abed39b33bd02c36e341b28ca59213/src/restore.ts#L10-L17
Expand Down Expand Up @@ -223,7 +223,7 @@ jobs:
- uses: matrix-org/setup-python-poetry@v2
with:
python-version: ${{ matrix.job.python-version }}
poetry-version: "2.1.1"
poetry-version: "2.2.0"
extras: ${{ matrix.job.extras }}
- name: Await PostgreSQL
if: ${{ matrix.job.postgres-version }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/fix_lint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
install-project: "false"
poetry-version: "2.1.1"
poetry-version: "2.2.1"

- name: Run ruff check
continue-on-error: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/latest_deps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
python-version: "3.x"
poetry-version: "2.1.1"
poetry-version: "2.2.1"
extras: "all"
# Dump installed versions for debugging.
- run: poetry run pip list > before.txt
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/push_complement_image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ jobs:
run: |
for TAG in ${{ join(fromJson(steps.meta.outputs.json).tags, ' ') }}; do
echo "tag and push $TAG"
docker tag complement-synapse $TAG
# `localhost/complement-synapse` should match the image created by `scripts-dev/complement.sh`
docker tag localhost/complement-synapse $TAG
docker push $TAG
done
49 changes: 41 additions & 8 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ jobs:
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
python-version: "3.x"
poetry-version: "2.1.1"
poetry-version: "2.2.1"
extras: "all"
- run: poetry run scripts-dev/generate_sample_config.sh --check
- run: poetry run scripts-dev/config-lint.sh
Expand Down Expand Up @@ -134,7 +134,7 @@ jobs:
- name: Setup Poetry
uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
poetry-version: "2.1.1"
poetry-version: "2.2.1"
install-project: "false"

- name: Run ruff check
Expand Down Expand Up @@ -169,7 +169,7 @@ jobs:
# https://github.com/matrix-org/synapse/pull/15376#issuecomment-1498983775
# To make CI green, err towards caution and install the project.
install-project: "true"
poetry-version: "2.1.1"
poetry-version: "2.2.1"

# Cribbed from
# https://github.com/AustinScola/mypy-cache-github-action/blob/85ea4f2972abed39b33bd02c36e341b28ca59213/src/restore.ts#L10-L17
Expand Down Expand Up @@ -265,7 +265,7 @@ jobs:
# Install like a normal project from source with all optional dependencies
extras: all
install-project: "true"
poetry-version: "2.1.1"
poetry-version: "2.2.1"

- name: Ensure `Cargo.lock` is up to date (no stray changes after install)
# The `::error::` syntax is using GitHub Actions' error annotations, see
Expand Down Expand Up @@ -398,7 +398,7 @@ jobs:
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
python-version: ${{ matrix.job.python-version }}
poetry-version: "2.1.1"
poetry-version: "2.2.1"
extras: ${{ matrix.job.extras }}
- name: Await PostgreSQL
if: ${{ matrix.job.postgres-version }}
Expand Down Expand Up @@ -500,7 +500,7 @@ jobs:
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
python-version: ${{ matrix.python-version }}
poetry-version: "2.1.1"
poetry-version: "2.2.1"
extras: ${{ matrix.extras }}
- run: poetry run trial --jobs=2 tests
- name: Dump logs
Expand Down Expand Up @@ -595,7 +595,7 @@ jobs:
- run: sudo apt-get -qq install xmlsec1 postgresql-client
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
poetry-version: "2.1.1"
poetry-version: "2.2.1"
extras: "postgres"
- run: .ci/scripts/test_export_data_command.sh
env:
Expand Down Expand Up @@ -648,7 +648,7 @@ jobs:
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
python-version: ${{ matrix.python-version }}
poetry-version: "2.1.1"
poetry-version: "2.2.1"
extras: "postgres"
- run: .ci/scripts/test_synapse_port_db.sh
id: run_tester_script
Expand Down Expand Up @@ -705,6 +705,13 @@ jobs:
toolchain: ${{ env.RUST_VERSION }}
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2

# We use `poetry` in `complement.sh`
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
poetry-version: "2.2.1"
# Matches the `path` where we checkout Synapse above
working-directory: "synapse"

- name: Prepare Complement's Prerequisites
run: synapse/.ci/scripts/setup_complement_prerequisites.sh

Expand All @@ -713,6 +720,32 @@ jobs:
cache-dependency-path: complement/go.sum
go-version-file: complement/go.mod

# Run the image sanity check test first as this is the first thing we want to know
# about (are we actually testing what we expect?) and we don't want to debug
# downstream failures (wild goose chase).
- name: Sanity check Complement image
id: run_sanity_check_complement_image_test
# -p=1: We're using `-p 1` to force the test packages to run serially as GHA boxes
# are underpowered and don't like running tons of Synapse instances at once.
# -json: Output JSON format so that gotestfmt can parse it.
#
# tee /tmp/gotest-complement.log: We tee the output to a file so that we can re-process it
# later on for better formatting with gotestfmt. But we still want the command
# to output to the terminal as it runs so we can see what's happening in
# real-time.
run: |
set -o pipefail
COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh --in-repo -p 1 -json -run 'TestSynapseVersion/Synapse_version_matches_current_git_checkout' 2>&1 | tee /tmp/gotest-sanity-check-complement.log
shell: bash
env:
POSTGRES: ${{ (matrix.database == 'Postgres') && 1 || '' }}
WORKERS: ${{ (matrix.arrangement == 'workers') && 1 || '' }}

- name: Formatted sanity check Complement test logs
# Always run this step if we attempted to run the Complement tests.
if: always() && steps.run_sanity_check_complement_image_test.outcome != 'skipped'
run: cat /tmp/gotest-sanity-check-complement.log | gotestfmt -hide "successful-downloads,empty-packages"

- name: Run Complement Tests
id: run_complement_tests
# -p=1: We're using `-p 1` to force the test packages to run serially as GHA boxes
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/twisted_trunk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
with:
python-version: "3.x"
extras: "all"
poetry-version: "2.1.1"
poetry-version: "2.2.1"
- run: |
poetry remove twisted
poetry add --extras tls git+https://github.com/twisted/twisted.git#${{ inputs.twisted_ref || 'trunk' }}
Expand Down Expand Up @@ -82,7 +82,7 @@ jobs:
with:
python-version: "3.x"
extras: "all test"
poetry-version: "2.1.1"
poetry-version: "2.2.1"
- run: |
poetry remove twisted
poetry add --extras tls git+https://github.com/twisted/twisted.git#trunk
Expand Down
43 changes: 43 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,46 @@
# Synapse 1.150.0 (2026-03-24)

No significant changes since 1.150.0rc1.




# Synapse 1.150.0rc1 (2026-03-17)

## Features

- Add experimental support for the [MSC4370](https://github.com/matrix-org/matrix-spec-proposals/pull/4370) Federation API `GET /extremities` endpoint. ([\#19314](https://github.com/element-hq/synapse/issues/19314))
- [MSC4140: Cancellable delayed events](https://github.com/matrix-org/matrix-spec-proposals/pull/4140): When persisting a delayed event to the timeline, include its `delay_id` in the event's `unsigned` section in `/sync` responses to the event sender. ([\#19479](https://github.com/element-hq/synapse/issues/19479))
- Expose [MSC4354 Sticky Events](https://github.com/matrix-org/matrix-spec-proposals/pull/4354) over the legacy (v3) /sync API. ([\#19487](https://github.com/element-hq/synapse/issues/19487))
- When Matrix Authentication Service (MAS) integration is enabled, allow MAS to set the user locked status in Synapse. ([\#19554](https://github.com/element-hq/synapse/issues/19554))

## Bugfixes

- Fix `Build and push complement image` CI job pointing to non-existent image. ([\#19523](https://github.com/element-hq/synapse/issues/19523))
- Fix a bug introduced in v1.26.0 that caused deactivated, erased users to not be removed from the user directory. ([\#19542](https://github.com/element-hq/synapse/issues/19542))

## Improved Documentation

- In the Admin API documentation, always express path parameters as `/<param>` instead of as `/$param`. ([\#19307](https://github.com/element-hq/synapse/issues/19307))
- Update docs to clarify `outbound_federation_restricted_to` can also be used with the [Secure Border Gateway (SBG)](https://element.io/en/server-suite/secure-border-gateways). ([\#19517](https://github.com/element-hq/synapse/issues/19517))
- Unify Complement developer docs. ([\#19518](https://github.com/element-hq/synapse/issues/19518))

## Internal Changes

- Put membership updates in a background resumable task when changing the avatar or the display name. ([\#19311](https://github.com/element-hq/synapse/issues/19311))
- Add in-repo Complement test to sanity check Synapse version matches git checkout (testing what we think we are). ([\#19476](https://github.com/element-hq/synapse/issues/19476))
- Migrate `dev` dependencies to [PEP 735](https://peps.python.org/pep-0735/) dependency groups. ([\#19490](https://github.com/element-hq/synapse/issues/19490))
- Remove the optional `systemd-python` dependency and the `systemd` extra on the `synapse` package. ([\#19491](https://github.com/element-hq/synapse/issues/19491))
- Avoid re-computing the event ID when cloning events. ([\#19527](https://github.com/element-hq/synapse/issues/19527))
- Allow caching of the `/versions` and `/auth_metadata` public endpoints. ([\#19530](https://github.com/element-hq/synapse/issues/19530))
- Add a few labels to the number groupings in the `Processed request` logs. ([\#19548](https://github.com/element-hq/synapse/issues/19548))

### Famedly additions for v1.150.0_1

- chore: Prohibit dependencies on included modules from causing unexpected version changes [\#247](https://github.com/famedly/synapse/pull/247)



# Synapse 1.149.1 (2026-03-11)

## Internal Changes
Expand Down
12 changes: 6 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

49 changes: 45 additions & 4 deletions complement/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ ensure everything works at a holistic level.
## Setup

Nothing beyond a [normal Complement
setup](https://github.com/matrix-org/complement?tab=readme-ov-file#running) (just Go and
Docker).
setup](https://github.com/matrix-org/complement#running) (just Go and Docker).


## Running tests
Expand All @@ -28,14 +27,39 @@ scripts-dev/complement.sh ./tests/csapi/... -run TestRoomCreate/Parallel/POST_/c
scripts-dev/complement.sh ./tests/... -run 'TestRoomCreate/Parallel/POST_/createRoom_makes_a_(.*)'
```

Typically, if you're developing the Synapse and Complement tests side-by-side, you will
run something like this:
It's often nice to develop on Synapse and write Complement tests at the same time.
Here is how to run your local Synapse checkout against your local Complement checkout.

```shell
# To run a specific test
COMPLEMENT_DIR=../complement ./scripts-dev/complement.sh ./tests/csapi/... -run TestRoomCreate
```

The above will run a monolithic (single-process) Synapse with SQLite as the database.
For other configurations, try:

- Passing `POSTGRES=1` as an environment variable to use the Postgres database instead.
- Passing `WORKERS=1` as an environment variable to use a workerised setup instead. This
option implies the use of Postgres.
- If setting `WORKERS=1`, optionally set `WORKER_TYPES=` to declare which worker types
you wish to test. A simple comma-delimited string containing the worker types
defined from the `WORKERS_CONFIG` template in
[here](https://github.com/element-hq/synapse/blob/develop/docker/configure_workers_and_start.py#L54).
A safe example would be `WORKER_TYPES="federation_inbound, federation_sender,
synchrotron"`. See the [worker documentation](../workers.md) for additional
information on workers.
- Passing `ASYNCIO_REACTOR=1` as an environment variable to use the asyncio-backed
reactor with Twisted instead of the default one.
- Passing `PODMAN=1` will use the [podman](https://podman.io/) container runtime,
instead of docker.
- Passing `UNIX_SOCKETS=1` will utilise Unix socket functionality for Synapse, Redis,
and Postgres(when applicable).

To increase the log level for the tests, set `SYNAPSE_TEST_LOG_LEVEL`, e.g:
```sh
SYNAPSE_TEST_LOG_LEVEL=DEBUG COMPLEMENT_DIR=../complement ./scripts-dev/complement.sh -run TestRoomCreate
```


### Running in-repo tests

Expand All @@ -52,3 +76,20 @@ To run the in-repo Complement tests, use the `--in-repo` command line argument.
# Similarly, you can also use `-run` to specify all or part of a specific test path to run
scripts-dev/complement.sh --in-repo ./tests/... -run TestIntraShardFederation
```

### Access database for homeserver after Complement test runs.

If you're curious what the database looks like after you run some tests, here are some
steps to get you going in Synapse:

1. In your Complement test comment out `defer deployment.Destroy(t)` and replace with
`defer time.Sleep(2 * time.Hour)` to keep the homeserver running after the tests
complete
1. Start the Complement tests
1. Find the name of the container, `docker ps -f name=complement_` (this will filter for
just the Complement related Docker containers)
1. Access the container replacing the name with what you found in the previous step:
`docker exec -it complement_1_hs_with_application_service.hs1_2 /bin/bash`
1. Install sqlite (database driver), `apt-get update && apt-get install -y sqlite3`
1. Then run `sqlite3` and open the database `.open /conf/homeserver.db` (this db path
comes from the Synapse homeserver.yaml)
1 change: 1 addition & 0 deletions complement/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ require (
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530 // indirect
github.com/matrix-org/util v0.0.0-20221111132719-399730281e66 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect
github.com/moby/term v0.5.2 // indirect
Expand Down
Loading
Loading