Releases: wireapp/wire-server
2023-10-23 (Chart Release 4.39.0)
Release notes
-
New field for Supported protocols in Galley's MLS feature config
Galley will refuse to start if the list
supportedProtocols
does not contain
the value of the fielddefaultProtocol
. Galley will also refuse to start if
MLS migration is enabled and MLS is not part ofsupportedProtocols
.The default value for
supportedProtocols
is:[proteus, mls]
(#3374)
API changes
-
The JSON schema of
NonConnectedBackends
has changed to have its single field now callednon_connected_backends
. (#3518) -
Remove de-federation (to avoid a scalability issue). (#3582)
-
Replace the placeholder self conversation id with the qualified conversation id for welcome events. (#3335)
-
Add new endpoint
DELETE /mls/key-packages/self/:client
(#3295) -
Introduce an endpoint for deleting a subconversation (#2956, #3119, #3123)
-
Remove MLS endpoints from API v4 and finalise it (#3545)
-
Add new endpoint
GET /conversations/one2one/:domain/:uid
to fetch the MLS 1-1 conversation with another user (#3345) -
Add
GET /conversations/:domain/:cid/subconversations/:id/groupinfo
endpoint to fetch the group info object for a subconversation (#2932) -
Introduce v5 development version (#3527)
-
It is now possible to use
PUT /conversation/:domain/:id/protocol
to transition from Mixed to MLS (#3334) -
Report a failure to add remote users to an MLS conversation (#3304)
-
The key package API has gained a
ciphersuite
query parameter, which should be the hexadecimal value of an MLS ciphersuite, defaulting to0x0001
. Theciphersuite
parameter is used by the claim and count endpoints. For uploads, the API is unchanged, and the ciphersuite is taken directly from the uploaded key package. (#3454) -
Add MLS migration feature config (#3299)
-
Switch to MLS draft 20. The following endpoints are affected by the change:
- All endpoints with
message/mls
content type now expect and return draft-20 MLS structures. POST /conversations
does not requirecreator_client
anymore.POST /mls/commit-bundles
now expects a "stream" of MLS messages, i.e. a sequence of TLS-serialised messages, one after the other, in any order. Its protobuf interface has been removed.POST /mls/welcome
has been removed. Welcome messages can now only be sent as part of a commit bundle.POST /mls/message
does not accept commit messages anymore. All commit messages must be sent as part of a commit bundle. (#3172)
- All endpoints with
-
Key packages and leaf nodes with x509 credentials are now supported (#3532)
Features
-
Add reason field to conversation.member-leave (#3640)
-
Support deleting a remote subconversation (#2964)
-
Introduce support for resetting a subconversation (#2956)
-
Introduce a "mixed" conversation protocol type. A conversation of "mixed" protocol functions as a Proteus converation as well as a MLS conversations. It's intended to be used for migrating conversations from Proteus to MLS. (#3258)
-
Added support for post-quantum ciphersuite 0xf031. Correspondingly, MLS groups with a non-default ciphersuite are now supported. The first commit in a group determines the group ciphersuite. (#3454)
-
Remove conversation size limit for MLS conversations (#3468)
-
Added support for MSL 1-1 conversations (#3360)
-
MLS application messages for older epochs are now rejected (#3438)
-
The public key in an x509 credential is now checked against that of the client (#3542)
-
Add federated endpoints to get subconversations (#2952)
-
Add Helm chart (
rabbitmq-external
) to interface RabbitMQ instances outside of the Kubernetes cluster. (#3626) -
Removing or kicking a user from a conversation also removes the user's clients from any subconversation. (#2942)
-
Add support for subconversations in
POST /mls/commit-bundles
(#2932) -
Implement endpoint for leaving a subconversation (#2969, #3080, #3085, #3107)
Bug fixes and other updates
-
Fix nix derivations for rust packages (#3628)
-
Ensure benchmarking dependencies are provided by nix development environment (#3628)
-
Disable a guest user from creating a group conversation (#3622)
-
Adding users to a conversation now enforces that all federation domains that will be in the conversation are federated with each other. (#3514)
-
Fix ES migration script. (#3558)
-
Fixed add user to conversation when one of the other participating backends is offline (#3585)
-
Create a new http2 connection in every federator client request instead of using a shared connection. (#3602)
-
list-clients returns with partial success even if one of the remote backends is unreachable (#3611)
-
Defederation notifications, federation.delete and federation.connectionRemoved, now deduplicate the user list so that we don't send them more notifications than required. (#3515)
-
Fix memory and TCP connection leak in brig, galley, caroghold and background-worker. (#3663)
-
Fix bug where notifications for MLS messages were not showing up in all notification streams of clients (#3610)
-
Map the MLS self-conversation creator's key package reference in Brig (#3055)
-
This fixes a bug where a remote member is removed from a conversation while their backend is unreachable, and the backend does not receive the removal notification once it is reachable again. (#3537)
-
Welcome messages are not sent anymore to the creator of an MLS group on the first commit (#3392)
Documentation
-
Fix: support api versions other than v0 in swagger docs. (#3619)
-
Updating the route documentation from Swagger 2 to OpenAPI 3. (#3570)
-
Elaborate on internal user creation in prod (#3596)
-
Adding a testing config entry to the PR guidelines. (#3624)
Internal changes
-
remove leaving clients immediately from subconversations (#3096)
-
Servantify internal end-points: brig/teams (#3634)
-
add conversation type to group ID serialisation (#3344)
-
Do not cache federation remote configs on non-brig services (#3612)
-
JSON derived schemas have been changed to no longer pre-process record fields to drop prefixes that were required to disambiguate fields.
Prefix processing still exists to drop leading underscores from field names, as we are using prefixed field names withmakeLenses
.
Code has been updated to useOverloadedRecordDot
with the changed field names. (#3518) -
Updating the route documentation library from swagger2 to openapi3.
This also introduced a breaking change in how we track what federation calls each route makes.
The openapi3 library doesn't support extension fields, and as such tags are being used instead in a similar way. (#3570) -
- Extending the information returned in errors for Federator. Paths and response bodies, if available, are included in error logs.
- Prometheus metrics for outgoing and incoming federation requests added. They can be enabled by setting
metrics.serviceMonitor.enabled
, like in other charts. (#3556)
-
CLI tool to consume messages from a RabbitMQ queue (#3589, #3655)
-
Removed user and client threshold fields from mls migration feature. (#3364)
-
Include timestamp in s3 upload path for test logs (#3621)
-
Migrating the following routes to the Servant API form.
POST /provider/services
GET /provider/services
GET /provider/services/:sid
PUT /provider/services/:sid
PUT /provider/services/:sid/connection
DELETE /provider/services/:sid
GET /providers/:pid/services
GET /providers/:pid/services/:sid
GET /services
GET /services/tags
GET /teams/:tid/services/whitelisted
POST /teams/:tid/services/whitelist (#3554) -
Provider API has been migrated to servant (#3547)
-
background-worker: Get list of domains from RabbitMQ instead of brig for pushing backend notifications (#3588)
-
Avoid including MLS application messages in the sender client's event stream. (#3379)
-
Avoid empty pushes when chunking pushes in galley (#3646)
-
Introduce a Galley DB table for subconversations (#2869)
-
Support mapping MLS group IDs to subconversations (#2869)
-
change version and conversation type to 16 bit in group ID serialisation (#3353)
-
Brig does not perform key package ref mapping anymore. Claimed key packages are simply removed from the
mls_key_packages
table. Themls_key_package_refs
table is now unused, and will be removed in the future. (#3172) -
Add intermediate "mixed" protocol for migrating from Proteus to MLS (#3292)
-
- Do not perform client checks for add and remove proposals in mixed conversations
- Restrict protocol updates to team conversations
- Disallow MLS application messages in mixed conversations
- Send remove proposals when users leave mixed conversations (#3303)
-
New cron job to save data usable to watch the progress of the Proteus to MLS migration in S3 bucket.
IMPORTANT: This cron job is not meant for general use! It can leak data about one team to other teams. (#3579)
-
Subconversations are now created on their first commit (#3355)
-
Propagate messages in MLS subconversations (#2937)
-
Move some MLS tests to new integration suite (#3286)
-
Check validity of notification IDs in the notification API (#3550)
-
stern: Optimize RAM usage of /i/users/meta-info (#3522)
-
Additional integration test for federated connections (#3538)
-
The bot API is now migrated to servant (#3540)
-
rusty-jwt-tools
is upgraded to version 0.5.0 (#3572) -
Refactored schema version tracking from manually managed to automatic. (#3643)
-
Avoid unnecessary error logs on service shutdown (#3592)
-
Introduce an effect for subconversations (#2869)
-
Via the update path update the key package of the committer in epoch 0 of a subconversation (#2975)
-
Add more tests for joining a sub...
v2023-08-16-r2 (Chart Release 4.38.0)
Bug fixes and other updates
- Fix syntax error in cassandra update to
brig.client
. (#3508)
v2023-08-16 (Chart Release 4.37.0)
API changes
- Conversation creation endpoints can now return
unreachable_backends
error responses with status code 533 if any of the involved backends are unreachable. The conversation is not created in that case. (#3486)
Bug fixes and other updates
- Make sure cassandra updates do not re-introduce removed content. (#3504)
Federation changes
- Return
unreachable_backends
error when some backends of newly added users to a conversation are not reachable (#3496)
2023-08-11 (Chart Release 4.36.0)
Release notes
-
federation only Introduce background-worker
This release introduces a new component: background-worker. This is currently
only used to federation-related tasks. Enabling federation in
the wire-server helm chart automatically installs this component.When federation is enabled, wire-server will require running RabbitMQ. The helm
chart inrabbitmq
can be used to install RabbitMQ. Please refer to the
documentation at https://docs.wire.com to install RabbitMQ in Kubernetes. These
new configurations are required:brig: config: rabbitmq: host: rabbitmq port: 5672 vHost: / secrets: rabbitmq: username: <YOUR_USERNAME> password: <YOUR_PASSWORD> galley: config: rabbitmq: host: rabbitmq port: 5672 vHost: / secrets: rabbitmq: username: <YOUR_USERNAME> password: <YOUR_PASSWORD> background-worker: config: rabbitmq: host: rabbitmq port: 5672 vHost: / adminPort: 15672 secrets: rabbitmq: username: <YOUR_USERNAME> password: <YOUR_PASSWORD>
The above are the default values (except for secrets, which do not have
defaults), if they work they are not required to be configured.
(#3276, #3314, #3333, #3366, #3383, #3391) -
Federation only A few helm values related to federation have been renamed, no action is required if federation was disabled.
If federation was enabled these values must be renamed in the wire-server chart:- tags.federator -> tags.federation
- brig.enableFederator -> brig.enableFederation
- galley.enableFederator -> galley.enableFederation
- cargohold.enableFederator -> galley.enableFederation
So, an old config which looked like this:
tags: federator: true brig: enableFederator: true galley: enableFederator: true cargohold: enableFederator: true
would now look like this:
tags: federation: true brig: enableFederation: true galley: enableFederation: true cargohold: enableFederation: true
(#3236)
-
Federation only From this release on, remote connections can be configured via an
internal REST API; the remote connections configured in the
values.yaml file(s) will be honored for a transition period, but will
be ignored starting in some future release.YOU NEED TO UPDATE YOUR BRIG HELM VALUES BEFORE DEPLOYING THIS RELEASE.
Add the following to brig:
brig: config: optSettings: setFederationStrategy: allowNone # [allowAll | allowDynamic | allowNone] setFederationDomainConfigsUpdateFreq: 10 # seconds
allowNone
is equivalent toallowList
with empty list;allowAll
remains the same as before;allowDynamic
isallowList
, but the
list is now stored in cassandra, not the config file.If your federator config values contain something like this:
federationStrategy: allowedDomains: - red.example.com - blue.example.com
you need to make sure that the following lines are part of your brig
config (after the upgrade and until you have loaded the data into
casssandra, federation with those domains won't possible if you forget
this):brig: config: optSettings: setFederationDomainConfigs: - domain: red.example.com search_policy: full_search - domain: blue.example.com search_policy: no_search
The search policy for a remote backend can be:
no_search
: No users are returned by federated searches. default.exact_handle_search
: Only users where the handle exactly matches are returned.full_search
: Additionally to exact_handle_search, users are found by a freetext search on handle and display name.
Once the new release is deployed, you need to copy all the data from
the config files intobrig.federation_remotes
in cassandra internal
CRUD
API;
look for/i/federation/remotes
).Once the upgrade has been deployed and cassandra has been filled
with the temporary contents of
brig.config.optSettings.setFederationDomainConfigs
, it is safe to
remove the latter and the above lines from the federator config. -
Upgrade team-settings version to 4.15.0-v0.31.16-0-8138d2e (#2180)
-
Upgrade webapp version to 2023-07-13-production.0-v0.31.16-0-a9b67c6 (#2302)
-
Update email templates from https://github.com/wireapp/wire-emails (#3386)
-
Removed brig configuration value from gundeck. (#3404)
API changes
-
Updating conversation meta-data APIs to be fault tolerant of unavailable federation servers. (#3229)
-
Adding users in Proteus will only succeed if all federated backends hosting the
users are available. Otherwise, the endpoint will fail with a Federation error,
enumerating all unavailable domains. (#3449) -
Added a new notification event type, "federation.delete". (#3397)
This event contains a single domain for a remote server that the local server is de-federating from.
This notification is sent twice during de-federation. Once before and once after cleaning up and removing references to the remote server from the local database. -
list unavailable backends as JSON on federation-unreachable-domains-error
- extend
federation-unreachable-domains-error
byFederationErrorData
- add
domains
field inFederationErrorData
, containing the list of failing
domains - deprecate
domain
field inFederationErrorData
which now contains the first
element ofdomains
(#3407)
- extend
-
Throw when remote users to be added to an MLS conversation are unreachable (#3322)
-
The
connection-update
internal Brig endpoint now has a different JSON format for its request body. See the swagger documentation for details. (#3458) -
Client objects have gained an optional
last_active
field. Whenever a client fetches notifications viaGET /notifications
, as long as it provides a client parameter, thelast_active
field of that client is updated, and set to the current timestamp, rounded to the next multiple of a week. (#3409) -
The
POST /conversations
endpoint now in case of the Proteus protocol gives a 503 error response listing unreachable backends in case there were any, instead of a 2xx response by adding only members from reachable backends. (#3479) -
User objects have gained a
supported_protocols
field. Users can set it to any subset of["proteus", "mls"]
usingPUT /self/supported-protocols
. There is also a new endpointGET /users/:domain/:id/supported-protocols
. The backend does not assign any semantics to this field, but it is intended to be used to coordinate migration to MLS across the clients of a user, as well as between two users participating in a 1-1 conversation. (#3326) -
Several federation Galley endpoints have a breaking change in their response types: "leave-conversation", "update-conversation" and "send-mls-message". They have been extended with information related to unreachable users. (#3248)
Features
-
Add federation options to the
coturn
Helm chart including DTLS support. The options themselves are strongly inspired by therestund
Helm chart. (#3283) -
Let cargohold redirect to different s3 download endpoints according to a
multiIngress
configuration. This is part of a larger multi-ingress story where one backend can pretend to be multiple ones by using different domains for different users. (#3264) -
Introduce
nginx_conf.additional_external_env_domains
(nginz and cannon) setting to configure CORS headers for multiple domains. (#3368) -
Add configuration options to setup instances of the
nginx-ingress-services
chart to act as additional ingresses (with sourrounding infrastructure) to provide additional domains for the same backend. (#3375) -
Nonce base 64 encoding is now unpadded (#3255)
-
MlsE2EIdConfig
does now contain an ACME discovery URL andverificationExpiration
is now a duration. (#3237, #3244) -
Functionality to determine the federation status between federating remote backends (#3290)
-
Prevent conversation creation if any two federated backends are not connected to each other (#3382)
-
Improve gundeck performance: notifications to multiple recipients are stored in a normalized manner. (#3403)
-
When a proteus message is send and a remote user's backend is offline, the message will be enqueued and reported as
failed_to_confirm_clients
(#3460, #3474) -
Check if remote backends are connected on adding conversation members (#3483)
-
In a setting where remote participants are included in a freshly created Proteus conversation, the backend now sends a conversation.create and a conversation.member-join event per user once all remote participants are confirmed. This fixes a bug where remote conv members would get false entries in the member lists in these events. (#3359)
-
Enable indexed billing members by default and remove the feature flag (#3434)
-
stern/backoffice: read, update, delete domain login redirects to custom backends (#3471)
Bug fixes and other updates
-
If role is not set ([], null, or field missing) in scim-put-user, do not change role to default in brig (#3488)
-
Do not accept federation traffic from not-federating backends (#3484)
-
Bump coturn default image to upstream coturn 4.6.2 + custom Wire code including a bugfix for a bug that resulted in unstable operation during higher load. (#3250)
-
Get ...
2023-04-17 (Chart release 4.35.0)
-
In (the unlikely) case your server config file contains
setWhitelist:
, you need to change this before the upgrade! It used to refer to a whitelisting service, which is now replaced with a local list of allowed domains and phone numbers. See docs for details. Migration path: add new config fields; upgrade, remove old config fields. (#3043) -
The coturn Helm chart has been promoted to beta level stability. (#3078)
API changes
- API v3 is now supported. The new MLS endpoints introduced in API v3 have been removed, and are now only available under v4. (#3122)
Features
-
Add internal endpoints of
cargohold
,galley
,legalhold
andspar
to the Swagger docs for internal endpoints. (#3007) -
The coturn container image included in the coturn Helm chart was updated to
version4.6.0-wireapp.4
.With this version of coturn, the Prometheus metrics endpoint has been
updated, and theturn_active_allocations
metric label has been renamed to
turn_total_allocations
. (#3078) -
Better error message for invalid ID in a credential when uploading MLS key packages (#3102)
-
Add Swagger documentation for internal endpoints. It's reachable at the path
/v<n>/api-internal/swagger{-ui,.json}
. (#3003) -
Render one Swagger page per internal endpoint. This superseeds the previous Swagger docs page for all internal endpoints. (#3094)
-
Feature flag for Outlook calendar integration (#3025)
-
Team feature setting for MLS end-to-end identity was added and server setting
setEnableMls
is exposed via new authorized endpointGET /system/settings
(#3082)
Bug fixes and other updates
-
The container image used for handling online TLS certificate updates in the
coturn Helm chart was updated to a version with metadata compatible with
containerd. (#3078) -
Fix a bug in the helm chart's nginx-ingress-services / federator Ingress resource introduced in the last release. (#3034)
-
Remove overly restricte api check (#3131)
-
Typing indicators not working accross federated backends (#3118)
Documentation
Internal changes
-
- use exponential backoff for retrying requests to Amazon
- also retry in case of server-side rate limiting by Amazon (#3121)
-
Also run the 'backoffice' pod in CI (to test it can successfully start) (#3130)
-
Make brig-schema a little faster by merging the first 34 schema migrations on fresh installations. (#3099)
-
Deflake integration test: metrics (#3053)
-
Document in code a function that sends remote Proteus messages (#PR_NOT_FOUND)
-
Lower the log level of federator inotify (#3056)
-
use Wai's settings for graceful shutdown (#3069)
-
CI integration setup time should be reduced: tweak the way cassandra-ephemeral is started (#3052)
-
charts: Mark all service/secret/configmap test resources to be re-created by defining them as helm hooks (#3037, #3049)
-
New integration test script with support for running end2end tests locally (#3062)
-
Bump nixpkgs to latest commit on nixpkgs-unstable branch (#3084)
-
Add config to allow to run helm tests for different services in parallel; improve integration test output logs (#3040)
-
Run brig and galley integration tests concurrently (#2825)
-
Add wrapper for bitnami/postgresql chart. (#3012)
-
Branch on performAction tags for finer-grained CallsFed constraints (#3030)
-
Fixed broken stern endpoint
POST i/user/meta-info
(#3035) -
Make stern fail on startup if supported backend api version needs bumping (#3035)
-
Automatically track CallsFed constraints via a GHC plugin (#3083)
-
Rust library
rusty-jwt-tools
upgraded to latest version (#3112) -
Fixed test of jwt-tools Rust FFI (#3125)
-
Enabling warnings for redundant constraints and removing the redundant
constraints. (#3009) -
Migrate
/teams/notifications
to use the Servant library. (#3020) -
Split polysemy
Members
constraints into multipleMember
constraints (#3093)
Federation changes
- Use
HsOpenSSL
instead oftls
for federation communication. (#3051)
2023-03-06 (Chart Release 4.34.0)
Release notes
-
In (the unlikely) case your server config file contains
setWhitelist:
, you need to change this before the upgrade! It used to refer to a whitelisting service, which is now replaced with a local list of allowed domains and phone numbers. See docs for details. Migration path: add new config fields; upgrade, remove old config fields. (#3043) -
The coturn Helm chart has been promoted to beta level stability. (#3078)
API changes
- API v3 is now supported. The new MLS endpoints introduced in API v3 have been removed, and are now only available under v4. (#3122)
Features
-
Add internal endpoints of
cargohold
,galley
,legalhold
andspar
to the Swagger docs for internal endpoints. (#3007) -
The coturn container image included in the coturn Helm chart was updated to
version4.6.0-wireapp.4
.With this version of coturn, the Prometheus metrics endpoint has been
updated, and theturn_active_allocations
metric label has been renamed to
turn_total_allocations
. (#3078) -
Better error message for invalid ID in a credential when uploading MLS key packages (#3102)
-
Add Swagger documentation for internal endpoints. It's reachable at the path
/v<n>/api-internal/swagger{-ui,.json}
. (#3003) -
Render one Swagger page per internal endpoint. This superseeds the previous Swagger docs page for all internal endpoints. (#3094)
-
Feature flag for Outlook calendar integration (#3025)
-
Team feature setting for MLS end-to-end identity was added and server setting
setEnableMls
is exposed via new authorized endpointGET /system/settings
(#3082)
Bug fixes and other updates
-
The container image used for handling online TLS certificate updates in the
coturn Helm chart was updated to a version with metadata compatible with
containerd. (#3078) -
Fix a bug in the helm chart's nginx-ingress-services / federator Ingress resource introduced in the last release. (#3034)
-
Remove overly restricte api check (#3131)
-
Typing indicators not working accross federated backends (#3118)
Documentation
Internal changes
-
- use exponential backoff for retrying requests to Amazon
- also retry in case of server-side rate limiting by Amazon (#3121)
-
Also run the 'backoffice' pod in CI (to test it can successfully start) (#3130)
-
Make brig-schema a little faster by merging the first 34 schema migrations on fresh installations. (#3099)
-
Deflake integration test: metrics (#3053)
-
Document in code a function that sends remote Proteus messages (#PR_NOT_FOUND)
-
Lower the log level of federator inotify (#3056)
-
use Wai's settings for graceful shutdown (#3069)
-
CI integration setup time should be reduced: tweak the way cassandra-ephemeral is started (#3052)
-
charts: Mark all service/secret/configmap test resources to be re-created by defining them as helm hooks (#3037, #3049)
-
New integration test script with support for running end2end tests locally (#3062)
-
Bump nixpkgs to latest commit on nixpkgs-unstable branch (#3084)
-
Add config to allow to run helm tests for different services in parallel; improve integration test output logs (#3040)
-
Run brig and galley integration tests concurrently (#2825)
-
Add wrapper for bitnami/postgresql chart. (#3012)
-
Branch on performAction tags for finer-grained CallsFed constraints (#3030)
-
Fixed broken stern endpoint
POST i/user/meta-info
(#3035) -
Make stern fail on startup if supported backend api version needs bumping (#3035)
-
Automatically track CallsFed constraints via a GHC plugin (#3083)
-
Rust library
rusty-jwt-tools
upgraded to latest version (#3112) -
Fixed test of jwt-tools Rust FFI (#3125)
-
Enabling warnings for redundant constraints and removing the redundant
constraints. (#3009) -
Migrate
/teams/notifications
to use the Servant library. (#3020) -
Split polysemy
Members
constraints into multipleMember
constraints (#3093)
Federation changes
- Use
HsOpenSSL
instead oftls
for federation communication. (#3051)
2023-01-26 (Chart Release 4.31.0)
Release notes
-
wire-server helm charts using Ingress resources are now compatible with kubernetes versions 1.22, 1.23 and 1.24 (but remain compatible with older versions of kubernetes).
If you upgrade to this version of helm charts and/or you upgrade your version of kubernetes while wire-server is deployed, you may find that
helm update
orhelmfile apply/sync
gives an error like this:Error: UPGRADE FAILED: current release manifest contains removed kubernetes api(s) for this kubernetes version and it is therefore unable to build the kubernetes objects for performing the diff. error from kubernetes: unable to recognize "": no matches for kind "Ingress" in version "extensions/v1beta1"
In which case you can use the helm mapkubeapis plugin to upgrade an existing release with the following command:# install plugin version 0.1.0 (more recent may not work) helm plugin install --version v0.1.0 https://github.com/helm/helm-mapkubeapis # adjust helm release name and namespace as required helm mapkubeapis --namespace wire nginx-ingress-services
Alternatively, if a few minutes of downtime are not a problem; you can
helm delete
a release and re-install it again, which will work without the above plugin. (#3002) -
Upgrade team-settings version to 4.14.0-v0.31.9-0-bf82b46 (#2180)
-
Upgrade webapp version to 2023-01-24-production.0-v0.31.9-0-17b742f (#2302)
API changes
- The unqualified
GET /conversations/:id
endpoint has been removed from API v3, and is restored to the previous behaviour of returning a Conversation using the v2 schema. Similarly, its qualified counterpartGET /conversations/:domain/:id
now returns a v2 Conversation when accessed through API v2. (#2992)
Bug fixes and other updates
-
Fix pagination in team user search (make search key unique) (#2968)
-
Update
inbucket
(fake smtp server) chart dependency: The prior version relied on an image that has been removed from docker hub. Thus, our owninbucket
chart could not be deployed anymore. (#2998)
Documentation
-
Add sphinx-copybutton plugin to make copying snippets of code from docs.wire.com easier. (#2900)
-
Hook federated API call documentation into docs.wire.com (manually). (#2988)
-
Tool for dumping fed call graphs (dot/graphviz and csv); see README for details (#2973)
Internal changes
-
Add Helm chart to configure clusters managed by k8ssandra-operator for test environments. (#2981)
-
Fix kind setup for running end-to-end federation tests locally. (#3008)
-
Fix Makefile target kind-restart-all. (#3015)
-
Add combinators for creating mocked federator responses in integration tests (#3014)
-
Add two integration tests arounds last prekeys (#2694)
-
Make ID tags more readable by expanding abbreviations to full names. (#2991)
-
Unused old swagger code removed from stern and team features (#3017)
-
Refactor Writetime from Int64 to wrapper of UTCTime (#2994)
-
Restructure docs.wire.com (#2986)
-
Fixed flaky team user search integration test (#2996)
2023-01-12 (Chart Release 4.30.0)
Release notes
-
This realease migrates data from
galley.member_client
togalley.mls_group_member_client
. When upgrading wire-server no manual steps are required. (#2859) -
Upgrade webapp version to 2022-12-19-production.0-v0.31.9-0-6b2f2bf (#2302)
API changes
-
- The endpoints
POST /conversations/list
andGET /conversations
have been removed. UsePOST /conversations/list-ids
followed byPOST /conversations/list
instead. - The endpoint
PUT /conversations/:id/access
has been removed. Use its qualified counterpart instead. - The field
access_role_v2
in theConversation
type, in the request body ofPOST /conversations
, and in the request body ofPUT /conversations/:domain/:id/access
has been removed. Its content is now contained in theaccess_role
field instead. It replaces the legacy access role, previously contained in theaccess_role
field. - Clients implementing the V3 API must be prepared to handle a change in the format of the conversation.access_update event. Namely, the field access_role_v2 has become optional. When missing, its value is to be found in the field access_role. (#2841)
- The endpoints
-
Added a domain parameter to the typing indicator status update API (#2892)
-
Support MLS self-conversations via a new endpoint
GET /conversations/mls-self
. This removes thePUT
counterpart introduced in #2730 (#2839) -
List the MLS self-conversation automatically without needing to call
GET /conversations/mls-self
first (#2856) -
Fail early in galley when the MLS removal key is not configured (#2899)
-
Introduce a flag in brig to enable MLS explicitly. When this flag is set to false or absent, MLS functionality is completely disabled and all MLS endpoints fail immediately. (#2913)
-
Conversation events may have a "subconv" field for events that originate in a MLS subconversation (#2933)
-
GET /system/settings/unauthorized
returns a curated set of system settings from brig. The endpoint is reachable without authentication/authorization. It's meant to be used by apps to adjust their behavior (e.g. to show a registration dialog if registrations are enabled on the backend.) Currently, only thesetRestrictUserCreation
flag is exported. Other options may be added in future (in consultation with the security department.) (#2903)
Features
-
The coturn Helm chart now has a
.tls.ciphers
option to allow setting
the cipher list for TLS connections, when TLS is enabled. By default,
this option is set to a cipher list which is compliant with BSI
TR-02102-2. (#2924) -
Nginz helm chart: The list of upstreams is split into
nginx_conf.upstreams
and
nginx_conf.extra_upstreams
. Extra upstreams are disabled by default. They can
be enabled by adding their name (entry's key) to
nginx_conf.enabled_extra_upstreams
.nginx_conf.ignored_upstreams
is only
applied to upstreams fromnginx_conf.upstreams
. In the default configuration
ofnginz
extra upstreams areibis
,galeb
,calling-test
andproxy
. If one
of those is deployed, its name has be be added to
nginx_conf.enabled_extra_upstreams
(otherwise, it won't be reachable). Unless
nginx_conf.upstreams
hasn't been changed manually (overriding its default),
this should be the only needed migration step. (#2849) -
A team member's role can now be provisioned via SCIM (#2851, #2855)
-
Introduce optional disabledAPIVersions configuration setting (#2951)
-
Add more logs to SMTP mail sending. Ensure that logs are written before the application fails due to SMTP misconfiguration. (#2818)
-
Added typing indicator status propagation to federated environments (#2892)
-
Allow vhost style addressing for S3 as path style is not supported for newer buckets.
More info: https://aws.amazon.com/blogs/aws/amazon-s3-path-deprecation-plan-the-rest-of-the-story/ (#2955)
Bug fixes and other updates
-
Fix typo for Servicemonitor enable var in default values for helm charts. (#2896)
-
The parser for the AWS/SNS error message to explain that an endpoint is already in use was incorrect. This lead to an "invalid token" error when registering push tokens for multiple user accounts (user ids) instead of updating the SNS endpoint with an additional user id. (#2921)
-
Avoid client deletion edge case condition which can lead to inconsistent data between brig and galley's clients tables. (#2830)
-
Conversations inside events are now serialised using the format of API V2 (#2971)
-
Do not throw 500 when listing conversations and MLS is not configured (#2893)
-
Do not list MLS self-conversation in client API v1 and v2 if it exists (#2872)
-
Limit 2FA code retries to 3 attempts (#2960)
-
Fix bug in MLS user removal from conversation: the list of removed clients has to be compared with those in the conversation, not the list of all clients of that user (#2817)
-
Due to
sftd
changing how configuration is handled for "multi-SFT" calling (starting with version 3.1.10), new options have been added to thesftd
Helm chart for compatibility with these newer versions. (#2886) -
For sftd/coturn/restund, fixed a bug in external ip address lookup, in case Kubernetes Node Name doesn't equal hostname. (#2837)
-
Requesting a new token with the client_id now works correctly when the old token is part of the request (#2860)
Documentation
-
Add extra section to the deeplink docs to explain the socks proxy support while login. (#2885)
-
Describe the auth cookie throttling mechanism. And overhaul the description of auth cookies in general. (#2941)
-
PR guidelines docs are updated with correct helm configuration syntax (#2889)
Internal changes
-
Log AWS / SNS invalid token responses. This is helpful for native push notification debugging purposes. (#2908)
-
Add tests for invitation urls in team invitation responses. These depend on the settings of galley. (#2797)
-
brig: Allow multiple threads to run simultaneously (#2972)
-
Remove support for compiling local docker images with buildah. Nix is used to build docker images these days (#2822)
-
Nix-created docker images: add some debugging tools in the containers, and add 'make build-image-' for convenience (#2829)
-
Added typeclasses to track uses of federated calls across the codebase. (#2940)
-
Split galley API routes and handler definitions into several modules (#2820)
-
Default intraListing to true. This means that the list of clients, so far saved in both brig's and galley's databases, will still be written to both, but only read from brig's database. This avoids cases where these two tables go out of sync. Brig becomes the source of truth for clients. In the future, if this holds, code and data for galley's clients table can be removed. (#2847)
-
Introduce the
MakesFederatedCall
Servant combinator (#2950) -
Bump nixpkgs to latest unstable. Stop using forked nixpkgs. (#2828)
-
Optimize memory usage while creating large conversations (#2970)
-
Reduce Polysemy-induced high memory requirements (#2947)
-
Brig calling API is now migrated to servant (#2815)
-
Fixed flaky feature TTL integration test (#2823)
-
Brig teams API is now migrated to servant (#2824)
-
Add 'inconsistencies' tool to check for, and repair certain kinds of data inconsistencies across different cassandra tables. (#2840)
-
Backoffice Swagger 2.x docs is exposed on
/
and the old Swagger has been removed. Backoffice helm chart only runs stern without an extra nginx. (#2846) -
Give proxy service a servant routing table for swagger (not for replacing wai-route; see comments in source code) (#2848)
-
Stern API endpoint
GET ejpd-info
has now the correct HTTP method (#2850) -
External commits: add additional checks (#2852)
-
Golden tests for conversation and feature config event schemas (#2861)
-
Add startup probe to brig helm chart. (#2878)
-
Track federated calls in types across the codebase. (#2940)
-
Update nix pins to point at polysemy-1.8.0.0 (#2949)
-
Add MakesFederatedCall combinators to Galley (#2957)
-
Fix
make clean
; allow new data constructors inToSchema Version
instance (#2965) -
Refactor and simplify MLS message handling logic (#2844)
-
Remove cassandra queries to the user_keys_hash table, as they are never read anymore since 'onboarding' / auto-connect was removed in #1005 (#2902)
-
Replay external backend proposals after forwarding external commits.
One column added to Galley's mls_proposal_refs. (#2842) -
Remove an unused effect for remote conversation listing (#2954)
-
Introduce types for subconversations (#2925)
-
Use treefmt to ensure consistent formatting of .nix files, use for shellcheck too (#2831)
Federation changes
-
Honour MLS flag in brig's federation API (#2946)
-
Split the Proteus and MLS message sending requests into separate types. The MLS request now supports MLS subconversations. This is a federation API breaking change. (#2925)
-
Injects federated calls into the
x-wire-makes-federated-calls-to
extension of the swagger Operations (#2950)
2022-12-09 (Chart Release 4.29.0)
2022-11-03 (Chart Release 4.26.0)
Release notes
-
If you have not upgraded to release 2021-03-21 (Chart Release 2.103.0) yet, please do that now!
NB: we only support releases 6 months back, so this should not be an issue. But in this particular case we are positive that things will break if you don't do an intermediate upgrade. (#2768)
-
Build docker images using nix derivations instead of Dockerfiles (#2331, #2771, #2772, #2775, #2776)
-
Upgrade team-settings version to 4.13.0-v0.31.5-0-4754212 (#2180)
-
Upgrade webapp version to 2022-11-02-production.0-v0.31.9-0-337e400 (#2302)
-
The experimental wire-server-metrics helm chart has been removed.
These were mostly a wrapper around prometheus operator. It makes more sense to
refer to the upstream docs of Prometheus Operator or Grafana Agent Operator for
installation instead. (#2740)
API changes
-
Do not expose swagger-ui on prod systems (to minimize attack surface) (#2800)
-
Change mime type of body of /v3/mls/commit-bundles endpoint (#2773)
-
Stop rate-limiting asset-signed-url requests on /assets/.* (#2786)
-
The
/access
endpoint now takes an optionalclient_id
query parameter. The first time it is provided, a new user token will be generated containing the given client ID. Successive invocations of/access
will ignore theclient_id
parameter. Some endpoints can now potentially require a client ID as part of the access token. When trying to invoke them with an access token that does not contain a client ID, an authentication error will occur. (#2764)
Features
-
Introduce support for external commits in MLS (#2765)
-
The
GET /teams/{tid}/members
endpoint now supports pagination (#2802)
Bug fixes and other updates
- Clients without any prekeys are not deleted completely (#2758)
Documentation
-
tentatively allow
GET /api/event-notification-schemas
for json schemas of server-initiated events (missing pieces tracked in https://wearezeta.atlassian.net/browse/FS-1008) (#2739) -
Fix copyright date on docs.wire.com (#2792)
-
Improve and cross-link documentation on SNS / push notifications. (#PR_NOT_FOUND)
-
Add extension sphinx-reredirects and configuration to generate simple JavaScript based redirects to new locations of previously inconsistently named files/URLs. (#2811)
Internal changes
-
Convert brig's auth endpoints to servant (#2750)
-
Remove deprecated table for storing scim external_ids.
Data has been migrated away in release 2021-03-21 (Chart Release 2.103.0) (see
/services/spar/migrate-data/src/Spar/DataMigration/V1_ExternalIds.hs
); last time it has been touched in production is before upgrade to release 2021-03-23 (Chart Release 2.104.0). (#2768) -
Refactor some internal Scim user tests (#2762)
-
Reduce the payload size of internal
client.delete
event (#2807, #2816) -
Bump servant-swagger-ui package. (#2747)
-
Increase charts/galley memory limit to 500M. (#2798)
-
Add RPC, ServiceRPC and GalleyProvider effects to brig (#2653)
-
Use locally build schema binaries for db migrations and execute them right before running integration tests. (#2791)
-
Rename the make targets from
db-migrate-package
anddb-reset-package
todb-migrate
anddb-reset
and allow migrating and resetting all keyspaces. (#2791) -
Add a Make target for ghci (#2749)
-
Upgrade nginz/nginx to 1.22.1 (#2777)
-
The dev environment provided by nix now contains all the haskell packages
compiled by nix. This could casue linker errors while compiling haskell code in
this repo. One way to get resolve them is to delete the 'dist-newstyle'
directory. (#2331) -
Implemented a new intersperse combinator for Polysemy (#2767)
-
Add a Concurrency effect for Polysemy (#2748)
-
Don't fail client deletion when mls remove key is undefined (#2738)
-
Migrate stern to swagger2-ui (remaining backwards compatible with circulating backoffice images) (see also #2742 from last release) (#2744)
-
Gundeck push token API and notification API is migrated to Servant (#2769)
-
Delete
deploy/services-demo
directory (#2789) -
Upgrade Servant to 0.19 (#2809)