- Fix a bug causing Sygnal to fail when processing notifications without a
content
dict, when those notifications were destined for GCM. Contributed by @c-cal. (#362)
- Add a new
convert_device_token_to_hex
configuration 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
/health
endpoint 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
sygnal
script. (#341) - Bump aioapns dependency to 3.0 in order to support Python 3.10+. (#347)
- Bump
matrix-common
dependency to1.3.0
. (#348) - Bump development dependencies. (#349)
- Add a new
push_type
configuration option for APNs apps, to control the value of theapns-push-type
header when sending requests. (#309)
- Fix a bug introduced in Sygnal 0.7.0 where a malformed
default_payload
could 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
black
code 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
topic
is 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
object
that 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_regex
tomatrix-python-common
. (#281) - Add
opentracing-types
to 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
git
not 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_only
push 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.md
more explicit about how to get tests passing. (#188) - Update
CONTRIBUTING.md
to 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.py
to 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.py
to run in tox environment, and add html reports (#217)
- Add
allowed_endpoints
option as an understood config option for WebPush pushkins. (#184) - Add
ttl
option as an understood config option for WebPush pushkins to make delivery more reliable (#185)
- Add
allowed_endpoints
configuration 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_connections
option in a GCM app config. (#157) - Fix bug where the
sygnal_inflight_request_limit_drop
metric 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
aioapns
dependency to 1.10, which has security fixes. (#139)
- Use
default_payload
from 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_id
in payload. (#114)
- Sygnal will no longer warn about the
database
config 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
/notify
request. - Add a
/health
endpoint 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_connections
config 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