Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
e1a429a
Run lint script to format Complement tests introduced in #19509 (#19636)
MadLittleMods Mar 31, 2026
2e9b820
Document context for why increase timeout for policy server requests …
MadLittleMods Mar 31, 2026
cb69895
Bump pygments from 2.19.2 to 2.20.0 (#19632)
dependabot[bot] Apr 2, 2026
62f23fe
include workaround for macos (#19615)
neilisfragile Apr 2, 2026
8291a49
resolves #19403 Report the rust compiler version used in the promethe…
RamReso Apr 3, 2026
a778497
Merge branch 'master' into develop
sandhose Apr 7, 2026
15662db
Fix Docker image link typo in worker docs (#19645)
MadLittleMods Apr 8, 2026
35b55e9
Advertise MSC4445 sync timeline order (#19642)
MadLittleMods Apr 8, 2026
f7c8967
Update developer stream docs to point out `_setup_sequence(...)` in `…
MadLittleMods Apr 9, 2026
fe74265
Add an API to list changes to quarantine state of media (#19558)
turt2live Apr 9, 2026
a7b87e2
Switch list quarantined media API to use max to_id instead of current…
turt2live Apr 9, 2026
2439990
Allow 'article' and 'profile' opengraph fields on URL previews. (#19659)
Half-Shot Apr 10, 2026
3a30ca6
Bump sentry-sdk, hiredis and pygithub (#19655)
dependabot[bot] Apr 10, 2026
aceb081
Bump actions/setup-go and actions/cache. (#19654)
dependabot[bot] Apr 10, 2026
2390116
Bump sqlglot from 29.0.1 to 30.2.1 (#19656)
dependabot[bot] Apr 10, 2026
62523d8
Bump cryptography from 46.0.6 to 46.0.7 (#19674)
dependabot[bot] Apr 10, 2026
0e3e947
Fix docstring for `limit` argument in `_maybe_backfill_inner(...)` (#…
MadLittleMods Apr 10, 2026
784a28b
Reject `device_keys: null` in `POST /keys/upload` (#19637)
sandhose Apr 13, 2026
8c1ac41
Small simplifications to the events class (#19680)
erikjohnston Apr 13, 2026
1a94960
Re-usable Complement GitHub CI workflow (#19533)
MadLittleMods Apr 13, 2026
d4034c0
1.152.0rc1
reivilibre Apr 14, 2026
bed00bb
Allow resigning of events with a new signing key (#19668)
sandhose Apr 14, 2026
52c05c5
Introduce `spam_checker_spammy` internal event metadata. (#19453)
reivilibre Apr 15, 2026
943da0a
Fix database migrations failing on platforms where SQLite is configur…
reivilibre Apr 15, 2026
71781de
Add a `FilteredEvent` type to handle per-user data on events (#19640)
erikjohnston Apr 16, 2026
2d015f7
Convert `EventInternalMetadata` to use `Arc<RwLock<_>>` (#19669)
erikjohnston Apr 16, 2026
e1b5631
Add upgrade notes for new quarantined_media_changes stream (#19694)
turt2live Apr 16, 2026
964ca65
Support MSC4450: Identity Provider selection for User-Interactive Aut…
reivilibre Apr 16, 2026
4252efa
Merge branch 'develop' into release-v1.152
reivilibre Apr 16, 2026
09b48cf
1.152.0rc1 (retry)
reivilibre Apr 16, 2026
15c03b9
MSC4242: State DAGs (CSAPI) (#19424)
kegsay Apr 16, 2026
bdb1cf7
Bump authlib from 1.6.9 to 1.6.11 (#19703)
dependabot[bot] Apr 17, 2026
647fb59
Add Admin API endpoints to manage user reports (#19657)
H-Shay Apr 17, 2026
2a82859
Prune old rows in `device_lists_changes_in_room` table. (#19473)
erikjohnston Apr 17, 2026
67b4d8e
Add docs for what to document about a new stream (#19696)
MadLittleMods Apr 17, 2026
a9361c4
Bail out if `admin_unsafely_bypass_quarantine` was used by a non-admi…
anoadragon453 Apr 17, 2026
3cdae2e
Fix race in new pruning of device lists tables. (#19709)
erikjohnston Apr 21, 2026
c8ce96f
Reinstate removed EventBase methods (#19712)
erikjohnston Apr 22, 2026
fbaff67
Merge branch 'develop' into release-v1.152
reivilibre Apr 22, 2026
b07a7cc
1.152.0rc1 (3rd try)
reivilibre Apr 22, 2026
2e0905e
fixup! 1.152.0rc1 (3rd try)
reivilibre Apr 22, 2026
613cb4d
Pruning data is a feature
reivilibre Apr 22, 2026
fa52c62
1.152.0
reivilibre Apr 28, 2026
16863c8
Changelog tweaks
reivilibre Apr 28, 2026
e0feb3b
Merge remote-tracking branch 'upstream/release-v1.152' into famedly-r…
jason-famedly Apr 28, 2026
8073ad1
chore: Update famedly module test invocation to use the new utilties
jason-famedly Apr 28, 2026
3c6b5d7
release: v1.152.0_1
jason-famedly Apr 29, 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
176 changes: 176 additions & 0 deletions .github/workflows/complement_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
# Re-usable workflow (https://docs.github.com/en/actions/how-tos/reuse-automations/reuse-workflows)
name: Reusable Complement testing

on:
workflow_call:
inputs:
use_latest_deps:
type: boolean
default: false
use_twisted_trunk:
type: boolean
default: false

# Control the permissions granted to `GITHUB_TOKEN`.
permissions:
# `actions/checkout` reads the repository (also see
# https://github.com/actions/checkout/tree/de0fac2e4500dabe0009e67214ff5f5447ce83dd/#recommended-permissions)
contents: read

env:
RUST_VERSION: 1.87.0

jobs:
complement:
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
include:
- arrangement: monolith
database: SQLite

- arrangement: monolith
database: Postgres

- arrangement: workers
database: Postgres

steps:
- name: Checkout synapse codebase
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
path: synapse

# Log Docker system info for debugging (compare with your local environment) and
# tracking GitHub runner changes over time (can easily compare a run from last
# week with the current one in question).
- run: docker system info
shell: bash

- name: Install Rust
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

# 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

- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
cache-dependency-path: complement/go.sum
go-version-file: complement/go.mod

# This step is specific to the 'Twisted trunk' test run:
- name: Patch dependencies
if: ${{ inputs.use_twisted_trunk }}
run: |
set -x
DEBIAN_FRONTEND=noninteractive sudo apt-get install -yqq python3 pipx
pipx install poetry==2.2.1

poetry remove -n twisted
poetry add -n --extras tls git+https://github.com/twisted/twisted.git#trunk
poetry lock
working-directory: synapse

# 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'
# We do not hide successful tests in `gotestfmt` here as the list of sanity
# check tests is so short. Feel free to change this when we get more tests.
#
# Note that the `-hide` argument is interpreted by `gotestfmt`. From it,
# it derives several values under `$settings` and passes them to our
# custom `.ci/complement_package.gotpl` template to render the output.
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
# 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 -p 1 -json 2>&1 | tee /tmp/gotest-complement.log
shell: bash
env:
POSTGRES: ${{ (matrix.database == 'Postgres') && 1 || '' }}
WORKERS: ${{ (matrix.arrangement == 'workers') && 1 || '' }}
TEST_ONLY_IGNORE_POETRY_LOCKFILE: ${{ inputs.use_latest_deps && 1 || '' }}
TEST_ONLY_SKIP_DEP_HASH_VERIFICATION: ${{ inputs.use_twisted_trunk && 1 || '' }}

- name: Formatted Complement test logs (only failing are shown)
# Always run this step if we attempted to run the Complement tests.
if: always() && steps.run_complement_tests.outcome != 'skipped'
# Hide successful tests in order to reduce the verbosity of the otherwise very large output.
#
# Note that the `-hide` argument is interpreted by `gotestfmt`. From it,
# it derives several values under `$settings` and passes them to our
# custom `.ci/complement_package.gotpl` template to render the output.
run: cat /tmp/gotest-complement.log | gotestfmt -hide "successful-downloads,successful-tests,empty-packages"

- name: Run in-repo Complement Tests
id: run_in_repo_complement_tests
# -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-in-repo-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 2>&1 | tee /tmp/gotest-in-repo-complement.log
shell: bash
env:
POSTGRES: ${{ (matrix.database == 'Postgres') && 1 || '' }}
WORKERS: ${{ (matrix.arrangement == 'workers') && 1 || '' }}
TEST_ONLY_IGNORE_POETRY_LOCKFILE: ${{ inputs.use_latest_deps && 1 || '' }}
TEST_ONLY_SKIP_DEP_HASH_VERIFICATION: ${{ inputs.use_twisted_trunk && 1 || '' }}

- name: Formatted in-repo Complement test logs (only failing are shown)
# Always run this step if we attempted to run the Complement tests.
if: always() && steps.run_in_repo_complement_tests.outcome != 'skipped'
# Hide successful tests in order to reduce the verbosity of the otherwise very large output.
#
# Note that the `-hide` argument is interpreted by `gotestfmt`. From it,
# it derives several values under `$settings` and passes them to our
# custom `.ci/complement_package.gotpl` template to render the output.
run: cat /tmp/gotest-in-repo-complement.log | gotestfmt -hide "successful-downloads,successful-tests,empty-packages"
4 changes: 2 additions & 2 deletions .github/workflows/famedly-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -442,7 +442,7 @@ jobs:

- name: Run invite-checker tests
working-directory: synapse-invite-checker
run: hatch run pip install -r synapse-requirements.txt && hatch run cov
run: hatch run pip install -r synapse-requirements.txt && hatch test -p -c

- name: Display Hatch Environment Info
if: always()
Expand Down Expand Up @@ -576,7 +576,7 @@ jobs:

- name: Run famedly-control tests
working-directory: famedly-control-synapse
run: hatch run pip install -r synapse-requirements.txt && hatch run cov
run: hatch run pip install -r synapse-requirements.txt && hatch test -p -c

- name: Display Hatch Environment Info
if: always()
Expand Down
79 changes: 3 additions & 76 deletions .github/workflows/latest_deps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -181,84 +181,11 @@ jobs:
/logs/**/*.log*

complement:
uses: ./.github/workflows/complement_tests.yml
needs: check_repo
if: "!failure() && !cancelled() && needs.check_repo.outputs.should_run_workflow == 'true'"
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
include:
- arrangement: monolith
database: SQLite

- arrangement: monolith
database: Postgres

- arrangement: workers
database: Postgres

steps:
- name: Check out synapse codebase
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
path: synapse

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

- uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
cache-dependency-path: complement/go.sum
go-version-file: complement/go.mod

- 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
# 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 -p 1 -json 2>&1 | tee /tmp/gotest-complement.log
shell: bash
env:
POSTGRES: ${{ (matrix.database == 'Postgres') && 1 || '' }}
WORKERS: ${{ (matrix.arrangement == 'workers') && 1 || '' }}
TEST_ONLY_IGNORE_POETRY_LOCKFILE: 1

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

- name: Run in-repo Complement Tests
id: run_in_repo_complement_tests
# -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-in-repo-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 2>&1 | tee /tmp/gotest-in-repo-complement.log
shell: bash
env:
POSTGRES: ${{ (matrix.database == 'Postgres') && 1 || '' }}
WORKERS: ${{ (matrix.arrangement == 'workers') && 1 || '' }}
TEST_ONLY_IGNORE_POETRY_LOCKFILE: 1

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

# Open an issue if the build fails, so we know about it.
# Only do this if we're not experimenting with this action in a PR.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ jobs:
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0

- name: Set up docker layer caching
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
Expand Down
Loading
Loading