- Add
send_badge_countsoption for FCM/GCM pushkin. (#421) - Add
send_badge_countsoption for APN pushkins. (#423)
- Link to Sygnal's Matrix room in the README. (#425)
- Make sure no empty badge-only notifications are sent if there are no badge counts in FCM. (#424)
This is the first Sygnal release under an AGPLv3.0 licence (with CLA, for proprietary dual licensing). You can read more about this here:
- https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/
- https://element.io/blog/element-to-adopt-agplv3/
- Fix issue where GCM pushkins behind proxy fail to start. (#408)
- Pin aioapns to be older than v4.0 to avoid a breaking change in key handling. Contributed by Michael DiStefano. (#417)
- Use Python 3.12 as a base for the Docker image instead of Python 3.11. (#400)
- Speed up the building of the Docker image. (#409)
- Add
HEALTHCHECKdirective to the container image, using existing/healthendpoint. (#418)
- Add basic instructions for running within a container. (#410)
- Bump twisted from 24.3.0 to 24.7.0. (#397)
- Bump aiohttp from 3.9.5 to 3.10.2. (#398)
- Fix unit tests by adding
setTcpNoDelaytoFakeTransport. (#402) - Bump
virtualenvfrom 20.26.2 to 20.26.6. (#405) - Bump
jinja2from 3.1.4 to 3.1.5. (#406) - Bump docker/build-push-action and docker/metadata-action to the latest versions. (#412)
- Add a CI test for Sygnal's HTTP proxy functionality. (#413)
- Fix incompatibility with
aiohttp>=3.10.0when using GCM with an HTTP proxy. (#395)
- The Matrix.org Foundation no longer requires "real" or "legally identifiable" names in order to contribute to projects. (#391)
- Pin
aiohttpdependency to <= 4.0.0. (#396)
NOTE: Exercise caution when installing over an existing sygnal installation via pip. The
sygnal package name was inadvertently changed to sygnal during the change to use poetry in v0.14.2.
Release v0.15.0 changes the package name back to matrix-sygnal, which is what it was prior to v0.14.2.
- Change package name back to matrix-sygnal. (#385)
- Truncate large values inside of Firebase notification content fields. (#386)
- Fixes an issue where retry attempts using the Firebase v1 API would fail due to nested
messages. (#387)
- Bump
tornadofrom 6.4 to 6.4.1. (#382)
- Don't delete android notification options specified in config when using Firebase v1 API. (#380)
- Fix tests to allow Twisted versions >=23.10. (#381)
- FCM v1: use async version of google-auth and add HTTP proxy support. (#372)
- Update docs & tests to reflect APNs usage in FCM v1 API. (#370)
- Update docker build and CI workflows to Python 3.11. (#373)
- Switch over to use poetry & add lock file to version control. (#374)
- Add manual proxy testing scripts & docs. (#375)
- Bump
blackfrom 23.9.1 to 24.3.0. (#376) - Bump
requestsfrom 2.31.0 to 2.32.2. (#377)
- Fix a bug causing Sygnal to fail when processing notifications without a
contentdict, when those notifications were destined for GCM. Contributed by @c-cal. (#362)
- Add a new
convert_device_token_to_hexconfiguration option for APNs apps, to allow disabling the conversion of device tokens from base64 to hex. (#344) - Adds the ability to use the new FCM v1 API. (#361)
- Fixed an issue which resulted in proxy configuration being ignored for APNs notifications. (#360)
Sygnal will soon be forked by Element under an AGPLv3.0 licence (with CLA, for proprietary dual licensing). You can read more about this here:
- https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/
- https://element.io/blog/element-to-adopt-agplv3/
The Matrix.org Foundation copy of the project will be archived. Any changes needed by server administrators will be communicated via our usual announcements channels, but we are striving to make this as seamless as possible.
- Set log level for
/healthendpoint toDEBUG. (#352)
- Fix a bug introduced in Sygnal 0.5.0 where
sygnal.__version__would not be correctly populated. (#355)
- Remove support for Python 3.7. (#343)
- Don't attempt delivery of notification if we have rejected pushkey. (#315)
- Improve static type checking. (#333, #336)
- Extend logging for outgoing pushes. (#334)
- Move from setup.py to pyproject.toml. (#335)
- Add entrypoint to allow running Sygnal by running the
sygnalscript. (#341) - Bump aioapns dependency to 3.0 in order to support Python 3.10+. (#347)
- Bump
matrix-commondependency to1.3.0. (#348) - Bump development dependencies. (#349)
- Add a new
push_typeconfiguration option for APNs apps, to control the value of theapns-push-typeheader when sending requests. (#309)
- Fix a bug introduced in Sygnal 0.7.0 where a malformed
default_payloadcould cause an internal server error. (#292)
- Document the use of an iOS Notification Service Extension and the Push Gateway API as a workaround to trigger VoIP notifications on iOS. (#285)
- Add a link to the docker image in the README. (#297)
- Avoid a breaking change in aioapns 2.1 by requiring an earlier version of that package. (#294)
- Fix test failures by using the latest versions of TLS in the TLS proxy tests. (#306)
- Update the
blackcode formatter to 22.3.0. (#307)
- Fix a bug introduced in Sygnal 0.5.0 where pushkin names would match substrings of app IDs and treat dots as wildcards. (#269)
- Fix a bug introduced in Sygnal 0.5.0 where GCM pushes would always fail when configured to handle an app ID glob. (#270)
- Treat more APNs errors as permanent rejections. (#280)
- Fix a bug introduced in Sygnal 0.9.1 where web pushkeys with missing endpoints would cause an error. (#288)
- Document that the
topicis most commonly the Bundle Identifier for the iOS application. (#284) - Add troubleshooting documentation for when you receive 'Could not deserialize key data' when using APNs with key files. (#286)
- Fix the changelog CI check when running on a fork of the Sygnal repository, rather than a branch. (#254)
- Configure @matrix-org/synapse-core to be the code owner for the repository. (#259)
- Improve static type checking. (#264)
- Use absolute imports for consistency. (#265)
- Remove explicit inheritance from
objectthat was left over from Python 2. (#266) - Use Python 3-style super calls. (#267)
- Add type hints to most of the code. (#271, #273, #274, #275, #276)
- Convert the README to use markdown rather than reStructuredText for consistency and familiarity. (#278)
- Move
glob_to_regextomatrix-python-common. (#281) - Add
opentracing-typesto the dev dependencies. (#287) - Add missing dependencies to
setup.py. (#290)
This release only makes changes to the way Docker images are built and released; it is otherwise identical to 0.10.0. Administrators who do not use Docker as their installation method have no need to upgrade from 0.10.0.
- Fix the docker image build from failing due to
gitnot being installed. This issue was introduced in v0.10.0. (#246) - CI now checks that the Docker image still builds after the Dockerfile is modified. (#248)
- Automatically build the Docker image for each release and push it to Docker Hub using GitHub Actions. (#249)
- Add a lint script (scripts-dev/lint.sh) for developers. (#243)
- Add more comprehensive Newsfile (changelog fragment) checks in CI. (#250)
Sygnal is now stateless, and does not rely on a database of any kind.
You may remove your existing SQLite or PostgreSQL databases once you are satisfied that this release is working as intended.
Configuration changes are not necessary, as the database section will be ignored if present.
- Remove legacy database to ease horizontal scaling. Contributed by H. Shay. (#236)
- Update CONTRIBUTING.md to recommend installing libpq-dev. Contributed by Tawanda Moyo. (#197)
- Improve static type checking. Contributed by Omar Mohamed. (#221, #223, #225, #227)
- Update towncrier CI check to run against the new default branch name. (#226)
- Update black to 21.6b0. (#233)
- Fix type hint errors from new upstream Twisted release. (#239)
- Fixup GitHub Actions pipeline to always run tests on PRs. (#240)
- Add CI testing for old dependencies. (#242)
- Prevent the push key from being rejected for temporary errors and oversized payloads, add TTL logging, and support
events_onlypush data flag. (#212) - WebPush: add support for Urgency and Topic header (#213)
- Fix a long-standing bug where invalid JSON would be accepted over the HTTP interfaces. (#216)
- Limit the size of requests received from HTTP clients. (#220)
- Remove manually added GeoTrust Root CA certificate from docker image as Apple is no longer using it. (#208)
- Make
CONTIBUTING.mdmore explicit about how to get tests passing. (#188) - Update
CONTRIBUTING.mdto specify how to run code style and type checks with Tox, and add formatting to code block samples. (#193) - Document how to work around pip installation timeout errors. Contributed by Omar Mohamed. (#215)
- Update Tox to run in the installed version of Python (instead of specifying Python 3.7) and to consider specific paths and folders while running checks, instead of the whole repository (potentially including unwanted files and folders, e.g. the virtual environment). (#193)
- Make development dependencies available as extras. Contributed by Hillery Shay. (#194)
- Update
setup.pyto specify that a minimum version of Python greater or equal to 3.7 is required. Contributed by Tawanda Moyo. (#207) - Port CI checks to Github Actions. (#210, #219)
- Upgrade development dependencies. Contributed by Omar Mohamed (#214)
- Set up
coverage.pyto run in tox environment, and add html reports (#217)
- Add
allowed_endpointsoption as an understood config option for WebPush pushkins. (#184) - Add
ttloption as an understood config option for WebPush pushkins to make delivery more reliable (#185)
- Add
allowed_endpointsconfiguration option for limiting the endpoints that WebPush pushkins will contact. (#182)
- Fix bug where the requests from different WebPush devices could bleed into each other. (#180)
- Fix bug when using a HTTP proxy where connections would sometimes fail to establish. (#181)
- Add experimental support for WebPush pushkins. (#177)
- Fix erroneous warning log line when setting the
max_connectionsoption in a GCM app config. (#157) - Fix bug where the
sygnal_inflight_request_limit_dropmetric would not appear in prometheus until requests were actually dropped. (#172) - Fix bug where Sygnal would not recover after losing connection to the database. (#179)
- Add preliminary documentation (Troubleshooting and Application Developers' Notes). (#150, #154, #158)
- Add a note to the releasing doc asking people to inform EMS and customers during the release process. (#155)
- Remove a source of noisy (but otherwise harmless) exceptions in tests. (#149)
- Add tests for HTTP Proxy support. (#151, #152)
- Remove extraneous log line. (#174)
- Fix type hints due to Twisted upgrade. (#178)
- Add the ability to configure custom FCM options, which is necessary for using iOS with Firebase. (#145)
- Add a Prometheus metric (
sygnal_inflight_request_limit_drop) that shows the number of notifications dropped due to exceeding the in-flight concurrent request limit. (#146)
- Include GeoTrust Global CA's certificate in the Docker image as it is needed for APNs (and was removed by Debian). (#141)
- Include GeoTrust Global CA's certificate in the Docker image as it is needed for APNs (and was removed by Debian). (#141)
- Add support for HTTP CONNECT proxies on outbound FCM and APNs traffic, with optional support for HTTP Proxy Basic Authentication. (#130)
- Add support for per-pushkin in-flight request limiting. (#132)
- Fixed MyPy errors so it can be enabled in CI and gradually be increased in coverage. (#131)
- Attempt the same number of retries for both GCM and APNS. (#133)
- Use tox for tests and linting. (#134)
- Include libpq5 in the docker image. (#135)
This version of Sygnal updates the minimum version of the aioapns dependency
to version 1.10 which addresses a TLS hostname validation bug in aioapns.
Sygnal was vulnerable to a man-in-the-middle attack on APNs data if someone could spoof your DNS or otherwise redirect your APNs traffic.
This issue affects any Sygnal deployments that make use of APNs certificate
authentication (i.e. those with certfile: something.pem in the configuration).
Administrators are encouraged to upgrade.
- Update minimum version of
aioapnsdependency to 1.10, which has security fixes. (#139)
- Use
default_payloadfrom the device data for both APNS and GCM payloads. (#127)
- Note information about Docker files in release instructions. (#126)
- Improve logging if a pushkin cannot be created. (#125)
- Report the APNS certificate expiry as a prometheus metric. (#106, #112)
- Change APNS payload to be mutable and include the
event_idin payload. (#114)
- Sygnal will no longer warn about the
databaseconfig field being not understood. (#100) - Log errors during start-up and fix the sample logging config. (#122)
- Document platform value for APNS apps (#110)
- Add Dockerfile. (#63)
- Reuse Configurations With asterisk App IDs and Token Based APNS Auth (#108)
- Fix an issue where using PostgreSQL would cause Sygnal to crash (#95)
NOTE: The config schema has changed. The db config section has been replaced
by database. Example configuration can be found in sygnal.yaml.sample. db will
continue to work, but the section is deprecated and may be removed in a future release.
- Add support for PostgreSQL (#91)
- Replace occurances of 'assertEquals' with 'assertEqual' to reduce deprecation noise while running tests. (#93)
- Add prometheus metric for the number of requests in flight. (#87)
- Add prometheus metrics to track pushkin things. (#88)
- Fix warnings about
finish()after disconnect. (#84) - Fix a bug which meant that requests were logged with an invalid timestamp. (#86)
- Change how we stub out HTTP requests in the tests. (#85)
- Fix typo leading to poor handling of 5xx GCM response codes.
- Handle 404 GCM response codes.
- Actually fix GCM connection limiting, and exception handling of exceptions that occur whilst reading the response body.
- Reduce logging for successful requests.
- Improve TLS performance to reduce CPU usage.
- Add a Prometheus metric that tracks the time taken to handle a
/notifyrequest. - Add a
/healthendpoint for checking whether Sygnal is up.
- Fix GCM connection limiting.
- Clean up exception handling code.
- Declare sentry-sdk as a dependency.
- Obey GCM maximum connections count.
- Document
max_connectionsconfig option in GCM. - Separate Twisted's logging and the access logging.
This is a rewrite of Sygnal 0.0.1. Before upgrading, please note that Python 3.7 or higher is required.
- Use new version of Apple Push Notification service (HTTP/2 protocol)
- Depend on Python 3.7+
- Depend on Twisted for async
- Add support for OpenTracing with Jaeger Tracing